我已将 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;
最佳答案
case WM_SETCURSOR:
{
if (LOWORD(lParam) == HTCLIENT)
{
SetCursor(NULL);
return TRUE;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
关于c++ - 将鼠标光标隐藏在 Windows 中的特定客户区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11394594/