0

左ボタンと右ボタンの両方が押されたときにカーソルを非表示にする必要があります。私のコードは、マウスの動きによる小さな不具合を除いて、期待どおりに機能していることがわかりました。

ShowCursor(FALSE) を呼び出すと、期待どおりにカーソルが非表示になります。その後、ShowCursor(TRUE) を呼び出すと、次のマウス移動まで​​カーソルが再び表示されません。私の意見-マウスイベントが発生するまで描画されません。カーソルを強制的に再描画する方法はありますか?

コード:

void SG::CursorManager::hideCursor(void) {
    while(ShowCursor(FALSE) >= 0);
}

void SG::CursorManager::showCursor(void) {
    while(ShowCursor(TRUE) <= 0);
}
4

1 に答える 1

6

Windowsでカーソルがどのように機能するかを正しく理解していればSetCursor(IDC_...)、カーソルをすぐに表示するために呼び出す必要があります。

問題は、メッセージへの応答として、カーソルが通常下のウィンドウから設定されることですWM_SETCURSOR。のアイデアはShowCursor()、メッセージを無効/有効にすることWM_SETCURSORです。cursr を無効にするSetCursor(NULL)と、カーソルが消えます。SetCursor(IDC_...)ただし、カーソルを有効にすると、どのカーソルを表示する必要があるかがわからないため、呼び出すことができません。WM_SETCURSORそのため、次が生成されるまで、つまりマウスが移動されるまで待機します。

于 2013-07-22T09:37:41.700 に答える