Directx窗口程序,画图会画到别人的窗口上,怎么办?

leojay 2004-01-04 01:41:28
如果有一个窗口在我的窗口上,比方说windows任务管理器,我在surface上画的图会画到那个任务管理器上,应该怎么解决呢?
...全文
84 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
leojay 2004-01-04
  • 打赏
  • 举报
回复
我不是用D3D的。我是用ddraw的,所以我用DirectDrawCreateEx来创建设备的。
dizzy 2004-01-04
  • 打赏
  • 举报
回复
HWND hWnd = FindWindow(...);
m_pD3D->CreateDevice(..., hWnd,...);

然后创建的Surface可以画到hWnd上。


leojay 2004-01-04
  • 打赏
  • 举报
回复
我的意思是说,我的程序还是激活状态的,但是其他的顶端窗口在我的窗口之上,这个时候我的程序会把被顶端窗口覆盖的部分画到那个顶端窗口上去。
这个问题怎么解决啊?
leojay 2004-01-04
  • 打赏
  • 举报
回复
但是windows任务管理器是一个在顶端的窗口呀,就算我的程序是激活的状态windows任务管理器也会在我的程序上面的。
比方说:
假设我的窗口是的位置是:CRect(100,100,200,200), ( 四个数据分别是left,top,right,bottom下同)
windows任务管理器的位置是:CRect(150,100,400,400),
那么我窗口画图时应该只画CRect(100,100,150,200),
但事实上我的窗口还是画了CRect(100,100,200,200)的大小,
也就是说画到了windows任务管理器上去了。
azheng0305 2004-01-04
  • 打赏
  • 举报
回复
给你的程序一个状态变量,比如布尔值g_bActive,当你的程序初始化成功以后,如果窗口处于激活状态,那么值为true,否则false。如果当前true==g_bActive,你就render或者framemove,否则就停止render/framemove

不过,你的surface怎么画倒别人的窗口上的?你GetDC到Desktop了?

8,324

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧