アプリケーションの子ウィンドウに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;
edit2:AHAH!このメッセージでは、hWndの代わりにwParamを使用する必要があります。動作するコードは次のとおりです。
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;