社区
图形处理/算法
帖子详情
关于ID3DXFont.DrawText和窗口最小化的问题
fangkmjo
2008-11-03 04:44:01
我用ID3DXFont.DrawText方法绘制文字,没有什么问题,但是如果把绘制窗口最小化后
再正常显示,程序就死了。这是为什么啊,怎么解决?很急啊
...全文
428
8
打赏
收藏
关于ID3DXFont.DrawText和窗口最小化的问题
我用ID3DXFont.DrawText方法绘制文字,没有什么问题,但是如果把绘制窗口最小化后 再正常显示,程序就死了。这是为什么啊,怎么解决?很急啊
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wanglei5695312
2010-04-20
打赏
举报
回复
顶了,学习中
DarknessTM
2008-11-04
打赏
举报
回复
那D3D8的 ID3DXFont 是如何恢复设备的?
fangkmjo
2008-11-04
打赏
举报
回复
DarknessTM大侠, 我用的是D3D8啊,ID3DXFont接口没有OnLostDevice 和OnResetDevice方法
DarknessTM
2008-11-04
打赏
举报
回复
我晕啊,你难道在每次reset的时候创建一次?
最先hook的应该是 IDirect3D8 的 CreateDevice 方法,在创建好设备后,就创建你的 ID3DXFont
然后hook Present
进行如下操作
IDirect3DDevice8::BeginScene
ID3DXFont::DrawText
IDirect3DDevice8::EndScene
IDirect3DDevice8::Present
此外hook Reset
进行如下操作
ID3DXFont::OnLostDevice
IDirect3DDevice8::Reset
ID3DXFont::OnResetDevice
fangkmjo
2008-11-04
打赏
举报
回复
DarknessTM大侠,
我照你的方法还是不行啊,我HOOK Reset的代码如下:
STDMETHOD(Reset)(THIS_ D3DPRESENT_PARAMETERS* pPresentationParameters)
{
HRESULT hr = m_pDevice->Reset(pPresentationParameters);
LOGFONT lf;
ZeroMemory(&lf, sizeof(LOGFONT));
lf.lfHeight = 25;
lf.lfWidth = 12;
lf.lfWeight = 500;
lf.lfItalic = false;
lf.lfUnderline = false;
lf.lfStrikeOut = false;
lf.lfCharSet = DEFAULT_CHARSET;
strcpy(lf.lfFaceName, "Times New Roman");
HFONT hFont;
hFont = CreateFont(12,0,0,0,0,0,0,0,0,0,0,0,0,"Arial");
D3DXCreateFontIndirect( m_pDevice,&lf,&m_lpDXFont);
return hr;
}
DarknessTM
2008-11-04
打赏
举报
回复
你就不能再hook下Reset啊,然后把你的资源reset
fangkmjo
2008-11-04
打赏
举报
回复
Silenker大哥,我是HOOK别的DirectX程序的Direct3DCreate8函数的,所有的调用都还是转发给DirectX API了
我只是在屏幕上显示文字,代码如下:
....
LOGFONT lf;
ZeroMemory(&lf, sizeof(LOGFONT));
lf.lfHeight = 25;
lf.lfWidth = 12;
lf.lfWeight = 500;
lf.lfItalic = false;
lf.lfUnderline = false;
lf.lfStrikeOut = false;
lf.lfCharSet = DEFAULT_CHARSET;
strcpy(lf.lfFaceName, "Times New Roman");
HFONT hFont;
hFont = CreateFont(12,0,0,0,0,0,0,0,0,0,0,0,0,"Arial");
D3DXCreateFontIndirect( m_pDevice,&lf,&m_lpDXFont);
...
STDMETHOD(EndScene)(THIS)
{
HRESULT hr = m_pDevice->EndScene();
RECT rect = {10,10,200,200};
char szText[MAX_PATH] = "掌门人科技";
if( m_pDevice->TestCooperativeLevel() == D3D_OK )
{
m_lpDXFont->DrawText( szText ,- 1,&rect,DT_CENTER,D3DCOLOR_XRG(255,0,255));
}
return hr;
}
您帮我看看啊,我不知道怎么搞
引力场变动源
2008-11-03
打赏
举报
回复
在窗体最小化以后,D3D会丢失设备,需要进行重置。重置的时候需要释放所有非Managered的资源,然后调用device的Reset方法。
详细的可以上网搜索一下“D3D 设备重置”。
Windows游戏编程系列之1:GUI
窗口
界面编程及游戏入门实战
我将带领大家来系统学习Windows的
窗口
编程,包括消息、
窗口
、GDI绘图、游戏开发等。本课程比较基础,非常适合初学者入门,读者可以边学习边实践。具体的章节目录和课程内容如下所示:---------------------------------------------Windows游戏编程系列之1:GUI界面编程及游戏入门实战1、Windows创建第一个
窗口
WinMain入口函数 5进行Windows编程的调试手法 6
窗口
从哪里来? 7
窗口
编程的步骤 7
窗口
编程需要的主要结构 8
窗口
编程需要的主要API 92、Windows的
窗口
过程与消息机制 如何留住
窗口
? 121)Windows的消息与消息循环 142)消息处理函数与常用消息 17)Windows的
窗口
过程函数 19 3、GDI编程之设备上下文 1)GDI的通用编程框架 222)GDI的绘图步骤 253)GDI获取设备句柄 254、GDI编程之绘制几何图形 画点、线 28颜色COLORREF 29矩形 29画圆、饼图、弦图 305、GDI编程之自定义画笔画刷画笔简介 32画刷简介 33画笔案例 33画刷案例 346、GDI编程之绘制文字
Draw
Text
函数 35
Text
Out 函数 (wingdi.h) 36CreateFont函数 37绘制文本案例 377、GDI编程之绘制位图 位图简介 381)在资源中添加位图资源 392)从资源中加载位图: LoadBitmap 393)创建一个与当前DC相匹配的DC(内存DC) 394)将bitmap放入匹配的DC中:SelectObject 405)成像(1:1 比例 ) 406)取出位图 407)释放位图 418)释放匹配的DC 41绘制位图案例 41 8、Windows鼠标键盘消息 一、键盘消息 421、键盘消息 422、消息参数: 423、消息的使用: 424、键盘消息的案例代码 43二、鼠标消息 441、基本鼠标消息 442、双击消息 443、滚轮消息 454、不响应双击消息 45 9、Windows定时器消息 定时器消息介绍 47创建定时器 47关闭定时器 47定时器消息案例代码 4810、GDI游戏之跳舞动画 11、GDI游戏之走路动画 12、GDI贪吃蛇游戏实战
Windows下的字体渲染
最近学习了一下Windows下的字体渲染,写个文档记录一下成果,方便回顾和分享。要在Windows平台下渲染字体主要有三种途径: 1. 调用Windows SDK提供的图形接口GDI/GDI+。 2. 调用DirectX提供的 D
3D
XCre
DX9显示文字-------VB6编程学习DX9游戏编程DirectX9编程2D小游戏源码冷风引擎CoolWind2D游戏引擎(14)
显示效果如下:
ID
3D
XFont
接口:
ID
3D
XFont
接口封装了在特定设备上渲染特定字体所需的纹理和资源。
ID
3D
XFont
接口具有以下方法: 通过调用D
3D
XCreateFont或D
3D
XCreateFontIndirect获得
ID
3D
XFont
接口。 LPD
3D
XFONT
...
DirectX在VS2017中C++项目中的应用
1、下载DirectX并安装 https://www.microsoft.com/en-us/download/details.aspx?
id
=6812 ...3、项目配置 选项目,右击按键选择属性,选择配置属性/VC++目录,在库目录添加路径 C:\Program Files %2
D
3D
绘制精确到屏幕上每一个像素
如果此时我们设置好
窗口
的视口区域,比如为(x,y,w
id
th,height)。经过上面的设置,D
3D
就知道应该将图像的left对应到视口的x, top对应到视口的y ,right对应到视口的x+w
id
th, bottom对应到视口的y+height.此时视口中的...
图形处理/算法
19,468
社区成员
50,698
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章