Win32模式对话框和非模式对话框的区别

本文深入解析Win32对话框的两种类型——模式对话框与非模式对话框的区别,包括创建方式、显示时间、函数返回值、使用消息循环以及关闭方式。同时提供具体实例帮助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Win32对话框分为两种类型:


   第一类:模式对话框

        模式对话框又分为两种

             1.应用程序模式对话框-->在关闭对话框前不能切换到同一程序另一窗口

             2.系统模式对话框-->关闭该对话框前无法切换到其他任何窗口(如关机时弹出的窗口)

               


   第二类:非模式对话框

          


 区别一:创建非模式对话框要调用API函数CreatDialogParam,而创建模式对话框要调用API函数DialogBoxParam(其中创建应用程序模式对话框和系统模式对话框之间的差别是对话框模板的style参数的不同,若要创建系统模式对话框该参数必须“或”上DS_SYSMODAL标志位)


 区别二显示时间不同。CreateDialogParam在创建对话框后,会根据资源文件中的对话框模板的风格是否定义了WS_VISIBLE在决定是否显示对话框窗口。如果定义了,则显示对话框;否则,需要在后续代码中调用ShowWindow来显示对话框。而DialogBoxParam函数创建的模式对话框,不过是否定义WS_VISIBLE风格都会显示对话框


 区别三:函数返回时间和返回值不同CreateDialogParam在创建对话框后直接返回,返回值是对华框窗口的句柄;二DialogBoxParam在对话框关闭时才返回,返回值是EndDialog中的dwResult参数


 区别四:使用的消息循环不同。非模式对话框在自己的消息循环中处理消息,二DialogBoxParam函数使用Windows内建的消息循环


 区别五:关闭时使用的函数不同。关闭非模式对话框使用DestroyWindow函数,关闭模式对话框使用EndDialog函数

 


具体实例见下篇博文。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值