wm_close與wm_destroy區別**)
wm_close 先於wm_destroy收到
case
wm_close:
postquitmessage (
0) ;
break
;case
wm_destroy:
messagebox(null,text(
"123
"),text(
"123"),
0);這樣的話,messagebox永遠不會出現的!
想要銷毀乙個視窗,又不想結束程式,那麼可以處理wm_destroy中,不要呼叫postquitmessage,如果是主程式的
視窗必須要呼叫postquitmessage,defwindowproc不處理wm_destroy訊息
當使用者按下系統功能表中的close按鈕,系統送出wm_close,通常程式的視窗函式不攔截此訊息,於是defwindowproc處理它, defwindowproc收到wm_close後呼叫destorywindow把視窗清除,destroywindow本身會送出 wm_destory.程式對wm_destory的標準反應是呼叫postquitmessage,postquitmessage送出 wm_quit,結束訊息迴圈
wm_close wm_quit wm_destroy 三者的區別**)
有三個訊息看 起來差不多,都是處理關閉的事情的。它們是wm_destroy,wm_close,和wm_quit。它們的確很相似,但你需要知道它們之間的不同!一 個視窗或者應用程式應該被關閉時發出wm_close訊息,當接收到wm_close訊息時,如果你願意,向使用者提出是否真的退出。你知道讓使用者作確認或 有錯誤出現或有什麼應該注意的事情發生的時候,往往彈出乙個訊息框。
插播訊息框
int messagebox(
hwnd hwnd, // handle of owner window
lpctstr lptext, // address of text in message box
lpctstr lpcaption, // address of title of message box
uint utype // style of message box
); 當收到wm_close訊息,你可以做兩件事兒。一件是你接受預設的處理返回乙個值,你若這樣做了,應用程式或視窗按照計畫關閉;再者,你返回0,應用程式或視窗將保持原樣。以下是**的基本部分:
if (msg == wm_close)
wm_destroy訊息有點兒不同。它是視窗正在關閉時發出的。
當得到wm_destroy訊息的時候,視窗已經從視覺上被刪除。
乙個主視窗被關閉,並不意味著應用程式結束了,它將在沒有視窗的條件下繼續執行。
然而,當乙個使用者關閉了主視窗,也就意味著他要結束應用程式,所以如果你希望應用程式結束,在收到wm_destroy訊息的時候,你必須發出乙個wm_quit訊息。
wm_quit是應用程式結束發出的訊息,一般可以看成程序被kill掉的情況.
postquitmessage是向系統發出要終止執行緒的請求, 在終止執行緒前系統還要做些記憶體的清理工作, 我們關閉乙個程式時是傳送wm_close訊息, 然後呼叫destroywindow函式,呼叫destroywindow時系統會向程式發wm_destroy訊息,終止整個程式
用自己的話總結一下:wm_close 訊息發出的時候,使用者可以根據自己的意願來選擇到底是否關閉,wm_destory 是真的關閉乙個視窗。wm_quit是退出乙個應用程式
安裝pyinstaller遇到的各種問題 小結
環境win7,anaconda3 使用的python版本是3.6.5 anaconda中整合了大部分常用的第三方庫,例如numpy等,但是有一些沒有整合需要手動安裝載入,之前安裝第三方庫使用的指令是 pip install 代表庫名字 問題1一如往常的安裝方法,pip install pyinsta...
webpack遇到各種問題到解決
webpack的概述就不再多少了。我直接講一下我在學習webpack過程中遇到的一些問題。問題1 在安裝區域性的webpack的過程中一直會報錯,無法安裝成功。一般原因是你在執行 npm init y 的時候,預設的把 package.json 檔案中 name 屬性命名為 webpack 所以會導...
搭環境時遇到的各種問題
jupyter 沒有python3 參考 jupyter notebook 裡面沒有python3怎麼辦?我幫您 出現的問題 pip3沒法安裝。pip3安裝 顯示pip3安裝成功,但是卻無法使用。實際上是沒有正確安裝。sudo apt get remove python3 pip sudo apt ...