使用IDirect3DDevice9 :: SetCursorProperties时,光标在非客户端区域闪烁

时间:2010-12-20 11:10:19

标签: winapi cursor direct3d nonclient

我有一个在Direct3D9下运行的应用程序。应用程序使用Direct3D HW游标API(IDirect3DDevice9::SetCursorProperties等)来控制游标。几乎一切都很好:

  • 在应用程序窗口内部时,显示由SetCursorProperties指定的光标
  • 当在应用程序窗口之外时,桌面或其他窗口根据需要显示正常的OS光标

问题在于窗口的非客户区域(标题栏,屏幕边缘)。在非客户区域移动时,会严格显示与该区域功能对应的光标,但一旦停止移动,将再次显示SetCursorProperties中设置的光标。

使用IDirect3DDevice9::SetCursorProperties的正确方法是什么,以便在窗口非客户区域获取默认的OS游标?

1 个答案:

答案 0 :(得分:1)

在尝试了各种各样的事情之后,应用程序中的以下更改已经解决了我的问题:

  • 在窗口过程中,当收到WM_SETCURSOR时,请记住全局变量(lParam&0xffff)==HTCLIENT中的条件CursorInClient的结果
  • 当全局变量CursorInClient为false时,请避免调用IDirect3DDevice9::ShowCursor