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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【Win32】只此一篇 让你清楚明细模式(DialogBoxParam)与非模式(CreateDialogParam)对话框的区别

發(fā)布時間:2024/8/1 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Win32】只此一篇 让你清楚明细模式(DialogBoxParam)与非模式(CreateDialogParam)对话框的区别 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

作者:Mitu_-_

除非特殊聲明,本貼均為原創(chuàng),轉(zhuǎn)載請務(wù)必保留本文鏈接

模式對話框與非模式對話框的大區(qū)別

  • 前言
  • 一、顯示方法
  • 二、返回方式與返回值
  • 三、關(guān)閉方式
  • 四、消息循環(huán)方式

前言

顧名思義,對話框完成的就是“”對話“”的功能,我們大部分的工作都是在主窗口的客戶區(qū)完成的,但程序往往需要和用戶進行交互,如輸入文本、輸入?yún)?shù)等等,這些界面完全不必放入主窗口中,而通常是通過彈出一個對話框來和用戶進行“”交流”。
創(chuàng)建對話框與創(chuàng)建窗口其實很相似,只不過用的函數(shù)不同而已。
我們可以通過兩種辦法來創(chuàng)建對話框:
1.模式對話框:DialogBoxParam

INT_PTR DialogBoxParamA(HINSTANCE hInstance,LPCSTR lpTemplateName,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam );

2非模式對話框:CreateDialogParam

HWND CreateDialogParamA(HINSTANCE hInstance,LPCSTR lpTemplateName,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam );

大家可以看出它們的參數(shù)都是相同的,那么它們有什么區(qū)別呢?

一、顯示方法

——*非模式對話框(CreateDialogParam)在創(chuàng)建對話框后,會根據(jù)對話框模板的風格是否定義了WS_VISIBLE來決定是否顯示對話框。
*如果定義了則顯示,沒有的話,則需要在以后自行調(diào)用ShowWindow來顯示它。
——而模式對話框(DialogBoxParam)不管是否定義了WS_VISIBLE風格都會顯示對話框
所以非模式對話框必須顯式地定義WS_VISIBLE才能在屏幕上顯示。



二、返回方式與返回值

——非模式對話框在建立對話框窗口后直接返回,返回值是對話框的句柄。
——模式對話框需要在對話框關(guān)閉后才能返回,返回值是EndDialog(如果不知道此函數(shù),可以先跳到“三、關(guān)閉方式”,再回來看)中的dwResult參數(shù)。



三、關(guān)閉方式

——關(guān)閉非模式對話框使用DestroyWindow函數(shù),!注意,這里不要用EndDialog函數(shù)
——關(guān)閉模式對話框使用EndDialog函數(shù)。!同樣,這里不能使用DestroyWindow函數(shù)
悄咪咪~~)(此處不懂,接著看“四、消息循環(huán)方式”,再回來看)



四、消息循環(huán)方式

——由“二、返回方式”可知,非模式對話框建立好后,就會直接返回,把消息循環(huán)交給應(yīng)用程序去處理,應(yīng)用程序就可以在自己的消息循環(huán)中獲取對話框消息。
——*而模式對話框是使用Windows為它內(nèi)建的消息循環(huán),然后才去調(diào)用對話框過程。調(diào)用完后才能返回到應(yīng)用程序的消息循環(huán)中去。
*(!!!注意:)由“二、返回方式”知,模式對話框去調(diào)用對話框過程的中間是不能返回值的, 只有對話框過程結(jié)束了之后,才能返回值,并返回到應(yīng)用程序的消息隊列。



這也就是為什么模式消息框打開后如果不關(guān)閉,就無法打開它的父程序了;
而非模式消息框打開后,仍可以打開它的父程序的原因了。



贈人玫瑰,手有余香!!!還望大家隨手點個贊喲(^U^)ノ~YO
碼字不易,大家的支持就是我堅持下去的動力。也不要忘記關(guān)注我哦!
我會持續(xù)為大家?guī)砀喔韶泦褈~~

總結(jié)

以上是生活随笔為你收集整理的【Win32】只此一篇 让你清楚明细模式(DialogBoxParam)与非模式(CreateDialogParam)对话框的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。