2010-12-20 89 views
1

我有一个在Direct3D9下运行的应用程序。该应用程序使用Direct3D HW游标API(IDirect3DDevice9::SetCursorProperties等)来控制游标。几乎一切正常:使用IDirect3DDevice9 :: SetCursorProperties时,非客户区域上的光标闪烁

  • 当应用程序窗口内,通过SetCursorProperties指定的光标显示
  • 当应用程序窗口之外,则需要通过桌面或其他窗口正常显示OS光标

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

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

回答

1

各种事物试验后,在应用程序中的以下变化已经解决了这个问题对我来说:

  • 在窗口过程中,一个WM_SETCURSOR收到时,记得条件(lParam&0xffff)==HTCLIENT的结果在全球可变CursorInClient
  • 当全局变量CursorInClient是假的,避免调用IDirect3DDevice9::ShowCursor
+0

你会做的更好听的数控击中测试消息如果您要打电话印花十字绣ursor – Necrolis 2010-12-20 20:12:03