2016-11-10 32 views
0

文檔說DefWindowProc()發送WM_SETCURSOR給父母。如果您不打電話DefWindowProc()WM_SETCURSOR而只是返回FALSE將WM_SETCURSOR發送到您的窗口的父母?換句話說,如果你只是返回FALSE,那麼發給你的代碼WM_SETCURSOR會發送WM_SETCURSOR給你的窗口的父窗口?這不是一個對話窗口。如果你處理WM_SETCURSOR並且不調用DefWindowProc(),WM_SETCURSOR會被髮送給父代嗎?

//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應該只做一件事。你必須嘗試,如果你不想要的話,總是使用第一版。 –

+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,如手冊所述。

相關問題