www.winprog.org讀書筆記

GetMessage遇到錯誤時,會返回-1,即便它的返回值被定義成BOOL。由於BOOL被定義爲UINT。 調用GetMessage的正確寫法是 while (GetMessage(&Msg, NULL, 0, 0) > 0),這樣能夠正確處理函數出錯以及程序退出的狀況。函數

能夠用PostMessage或SendMessage來發送消息。PostMessage把消息放入消息隊列再當即返回。這意味着你調用PostMessage後消息可能被處理,也可能還沒被處理。SendMessage則把消息送往窗口而且窗口沒有結束處理消息以前不返回。隊列

模態對話框過程和窗口過程有一些重要的差異,其中第一第二點也適用於非模態對話框。消息隊列

  1. 對於你不處理的消息不調用DefWindowProc()。在對話框中這是自動完成的,你要是真的要本身調用的話會有問題。
  2. 對於不處理的消息返回FALSE,處理的話返回TRUE。
  3. 不調用DestroyWindow來關閉一個對話框,而調用EndDialog()。
  4. 不處理WM_CREATE,取而代之,處理WM_INITDIALOG消息來作對話框出現以前的任何操做。

用CreateDialog能夠建立非模態對話框,它沒有本身的消息循環。而DialogBox()擁有本身的消息循環而且直到對話框關閉才返回。 非模態對話框過程,不須要調用EndDialog,能夠像常規的窗口同樣調用DestroyWindow。循環

對話框就是一個窗口,而且大多數對話框的API能夠工做於任何窗口。程序

相關文章
相關標籤/搜索