日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

非模式对话框CreateDialog() 与 模式对话框 DialogBoxParam()和DialogBox()

發布時間:2024/8/1 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 非模式对话框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中建立主窗口后建立,對話框句柄保存備用。

hDlgModeless = CreateDialog (hInstance, TEXT ("ColorScrDlg"), //對話框模板hwnd, ColorScrDlg //對話框消息處理函數);

四、消息循環添加針對非模式對話框的處理

“非模式對話框”與“模式對話框”不同,模式對話框工作的時候,有其內部的消息泵機制。
而非模式對話框則象普通窗口一樣,由WinMain中書寫的消息循環驅動。
但由于是對話框,它對一些消息有特殊的處理,例如用于在對話框中各子控件間導航的"TAB"鍵、"ENTER"鍵等等。
因此,在消息循環中,需要先給對話框提供截獲消息的機會。

while (GetMessage (&msg, NULL, 0, 0)){if (hDlgModeless == 0 || !IsDialogMessage (hDlgModeless, &msg)){TranslateMessage (&msg) ;DispatchMessage (&msg) ;}}


如果當前取得的消息是對話框消息的話,IsDialgMessage將它交由對話消息處理函數處理,并返回TRUE。
不需要在派發了。

五、非模式對話框的銷毀

使用:

DestroyWindow (hDlg);

非模式對話框使用CreateDialg建立。
可以在WinMain中建立主窗口后建立,對話框句柄保存備用。

hDlgModeless = CreateDialog (hInstance, TEXT ("ColorScrDlg"), //對話框模板hwnd, ColorScrDlg //對話框消息處理函數);

消息循環添加針對非模式對話框的處理

“非模式對話框”與“模式對話框”不同,模式對話框工作的時候,有其內部的消息泵機制。
而非模式對話框則象普通窗口一樣,由WinMain中書寫的消息循環驅動。
但由于是對話框,它對一些消息有特殊的處理,例如用于在對話框中各子控件間導航的"TAB"鍵、"ENTER"鍵等等。
因此,在消息循環中,需要先給對話框提供截獲消息的機會。

while (GetMessage (&msg, NULL, 0, 0)){if (hDlgModeless == 0 || !IsDialogMessage (hDlgModeless, &msg)){TranslateMessage (&msg) ;DispatchMessage (&msg) ;}}


如果當前取得的消息是對話框消息的話,IsDialgMessage將它交由對話消息處理函數處理,并返回TRUE。
不需要在派發了。

六、非模式對話框的銷毀

使用:

DestroyWindow (hDlg);

轉載于:https://my.oschina.net/dake/blog/196793

總結

以上是生活随笔為你收集整理的非模式对话框CreateDialog() 与 模式对话框 DialogBoxParam()和DialogBox()的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。