我将directx 嵌入到我的应用程序的子窗口中,并且希望仅在窗口光标位于该客户区域上方时才隐藏它。我通常知道如何隐藏光标,并且确实设法找到了一个临时示例,如果仅在光标不在任何客户区域上方时显示光标,但这对此没有帮助。如何仅在光标位于特定客户区(/子窗口)上方时隐藏光标?
编辑:这和我得到的一样接近,但是光标在 dx 区域上时会不可预测地闪烁(随着鼠标移动)
case WM_SETCURSOR:
{
static bool bCursorVisible = TRUE;
if( hWnd!=hwD3DArea && !bCursorVisible )
{
ShowCursor((bCursorVisible=TRUE));
}
else if( hWnd==hwD3DArea && bCursorVisible )
{
ShowCursor((bCursorVisible=FALSE));
return TRUE;
}
}
break;
编辑2:啊哈!您必须在此消息中使用 wParam 而不是 hWnd 这是工作代码:
case WM_SETCURSOR:
{
static bool bCursorVisible = TRUE;
if( ((HWND)wParam)!=hwD3DArea && !bCursorVisible )
{
ShowCursor((bCursorVisible=TRUE));
}
else if( ((HWND)wParam)==hwD3DArea && bCursorVisible )
{
ShowCursor((bCursorVisible=FALSE));
return TRUE;
}
}
break;