2016-11-10 14 views
0

DefWindowProc()WM_SETCURSORを親に送信しています。 WM_SETCURSORからDefWindowProc()を呼び出していない場合は、代わりにFALSEを返すと、WM_SETCURSORがウィンドウの親に送信されますか?言い換えれば、偽を返した場合、WM_SETCURSORを送信したコードは、ウィンドウの親にWM_SETCURSORを送りますか?これはダイアログウィンドウではありません。WM_SETCURSORは、それを処理してDefWindowProc()を呼び出さないと、親に送信されますか?

//Are these two the same? 
    case WM_SETCURSOR: 
     //More code 
     return DefWindowProc(hwnd, msg, wParam, lParam); 

    case WM_SETCURSOR: 
     //More code 
     return FALSE; 
+0

推測が困難です。これは、これが親ウィンドウであるか、DefWindowProc()という子ウィンドウであるかによって異なります。とにかくコメントアウトされているわけではありませんが、WM_SETCURSORはただ一つのことしかしてはいけません。あなたがしたくない場合は、常に第1版を使用してみてください。 –

+0

@HansPassant:動的にカーソルを設定する部分は、状態を評価することです。カーソルを動的に設定する必要がない場合、 'WM_SETCURSOR'メッセージを処理する理由はまったくありません。クラスカーソルはうまくいくでしょう。あなたが 'WM_SETCURSOR'を扱っているならば、カーソルを設定するだけでは不十分です。 – IInspectable

+0

https://blogs.msdn.microsoft.com/oldnewthing/20061121-15/?p=28943 – jamesdlin

答えて

0

答えは次のとおりです。 Windowsによって直接呼び出され、FALSEを返した場合、それ以上のことは起こりませんが、それは状況ではない可能性があります。

あなたがDefWindowProcまたはいくつかの他のウィンドウプロシージャによって呼び出された場合、FALSEを返すためには、あなたがメッセージを処理していないと言うことです。それ以上の処理は可能ですが、正確には発信者に依存します。

それはおそらく良いアイデアではありません。手動で言うようにTRUEを返すかDefWindowProcを呼び出してください。

関連する問題