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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

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

發布時間:2024/8/1 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 非模式对话框CreateDialog() 与 模式对话框 DialogBoxParam()和... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

非模式對話框CreateDialog() 與 模式對話框 DialogBoxParam()和DialogBox()



一、模式對話框比非模式對話框的好處?是,它是作為一個獨立窗口打開的,不會影響父窗口的狀態,而后者打開后,關閉前父窗口是不能使用的。而且必須要對話框關閉以后,函數才會返回調用生成對話框語句的下一句。而模式對話框在不關閉的情況下也能返回下一句程序位置。

比如:

[cpp]? view plain copy
  • //模式對話框時??
  • 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/ypimgt/blog/69367

    總結

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

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