非模式对话框CreateDialog() 与 模式对话框 DialogBoxParam()和DialogBox()
為什么80%的碼農都做不了架構師?>>> ??
一、非模式對話框比模式對話框的好處是,它是作為一個獨立窗口打開的,不會影響父窗口的狀態,而后者打開后,關閉前父窗口是不能使用的。而且必須要對話框關閉以后,函數才會返回調用生成對話框語句的下一句。而模式對話框在不關閉的情況下也能返回下一句程序位置。
比如:
//模式對話框時 hwndResultDlg = CreateDialog (hInst, TEXT ("RESULT"), hwnd, ResultDlg) ; 語句2;//在對話框開啟時,不能返回執行,必須要先關閉才行 //非模式對話框時 DialogBoxParam (hInst, TEXT ("SEND"), hwnd, SendDlg,0); 語句2;//在對話框開啟狀態下也能返回執行之二、DialogBoxParam()與DialogBox的區別是,前者最后多一個參數,可以傳遞給Iparam參數。
兩者銷毀都用EndDialog()
三、非模式對話框使用CreateDialg建立。
可以在WinMain中建立主窗口后建立,對話框句柄保存備用。
四、消息循環添加針對非模式對話框的處理
“非模式對話框”與“模式對話框”不同,模式對話框工作的時候,有其內部的消息泵機制。
而非模式對話框則象普通窗口一樣,由WinMain中書寫的消息循環驅動。
但由于是對話框,它對一些消息有特殊的處理,例如用于在對話框中各子控件間導航的"TAB"鍵、"ENTER"鍵等等。
因此,在消息循環中,需要先給對話框提供截獲消息的機會。
如果當前取得的消息是對話框消息的話,IsDialgMessage將它交由對話消息處理函數處理,并返回TRUE。
不需要在派發了。
五、非模式對話框的銷毀
使用:
非模式對話框使用CreateDialg建立。
可以在WinMain中建立主窗口后建立,對話框句柄保存備用。
消息循環添加針對非模式對話框的處理
“非模式對話框”與“模式對話框”不同,模式對話框工作的時候,有其內部的消息泵機制。
而非模式對話框則象普通窗口一樣,由WinMain中書寫的消息循環驅動。
但由于是對話框,它對一些消息有特殊的處理,例如用于在對話框中各子控件間導航的"TAB"鍵、"ENTER"鍵等等。
因此,在消息循環中,需要先給對話框提供截獲消息的機會。
如果當前取得的消息是對話框消息的話,IsDialgMessage將它交由對話消息處理函數處理,并返回TRUE。
不需要在派發了。
六、非模式對話框的銷毀
使用:
轉載于:https://my.oschina.net/dake/blog/196793
總結
以上是生活随笔為你收集整理的非模式对话框CreateDialog() 与 模式对话框 DialogBoxParam()和DialogBox()的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为手机计算机快捷,快速让华为手机变成一
- 下一篇: 用c语言可以写一个编译器吗,为什么C语言