作者:Mitu_-_

除非特殊声明,本贴均为原创,转载请务必保留本文链接

模式对话框与非模式对话框的大区别

  • 前言
  • 一、显示方法
  • 二、返回方式与返回值
  • 三、关闭方式
  • 四、消息循环方式

前言

顾名思义,对话框完成的就是“”对话“”的功能,我们大部分的工作都是在主窗口的客户区完成的,但程序往往需要和用户进行交互,如输入文本、输入参数等等,这些界面完全不必放入主窗口中,而通常是通过弹出一个对话框来和用户进行“”交流”。
创建对话框与创建窗口其实很相似,只不过用的函数不同而已。
我们可以通过两种办法来创建对话框:
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
);

大家可以看出它们的参数都是相同的,那么它们有什么区别呢?

一、显示方法

——*非模式对话框(CreateDialogParam)在创建对话框后,会根据对话框模板的风格是否定义了WS_VISIBLE来决定是否显示对话框。
*如果定义了则显示,没有的话,则需要在以后自行调用ShowWindow来显示它。
——而模式对话框(DialogBoxParam)不管是否定义了WS_VISIBLE风格都会显示对话框
所以非模式对话框必须显式地定义WS_VISIBLE才能在屏幕上显示。



二、返回方式与返回值

——非模式对话框在建立对话框窗口后直接返回,返回值是对话框的句柄。
——模式对话框需要在对话框关闭后才能返回,返回值是EndDialog(如果不知道此函数,可以先跳到“三、关闭方式”,再回来看)中的dwResult参数。



三、关闭方式

——关闭非模式对话框使用DestroyWindow函数,!注意,这里不要用EndDialog函数
——关闭模式对话框使用EndDialog函数。!同样,这里不能使用DestroyWindow函数
(悄咪咪~~)(此处不懂,接着看“四、消息循环方式”,再回来看)



四、消息循环方式

——由“二、返回方式”可知,非模式对话框建立好后,就会直接返回,把消息循环交给应用程序去处理,应用程序就可以在自己的消息循环中获取对话框消息。
——*而模式对话框是使用Windows为它内建的消息循环,然后才去调用对话框过程。调用完后才能返回到应用程序的消息循环中去。
*(!!!注意:)由“二、返回方式”知,模式对话框去调用对话框过程的中间是不能返回值的, 只有对话框过程结束了之后,才能返回值,并返回到应用程序的消息队列。



这也就是为什么模式消息框打开后如果不关闭,就无法打开它的父程序了;
而非模式消息框打开后,仍可以打开它的父程序的原因了。



赠人玫瑰,手有余香!!!还望大家随手点个赞哟(^U^)ノ~YO
码字不易,大家的支持就是我坚持下去的动力。也不要忘记关注我哦!
我会持续为大家带来更多干货哟~~~

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

  1. Win32病毒入门 -- ring3篇

    Win32病毒入门 -- ring3篇 by pker / CVC.GB 1.声明 ------- 本文仅仅是一篇讲述病毒原理的理论性文章,任何人如果通过本文中讲述的技术或利用本文 中的代码写出恶性病 ...

  2. Win32病毒入门--ring3篇

    Win32病毒入门--ring3篇 声明 一篇讲述病毒原理的理论性文章,任何人如果通过本文中讲述的技术或利用本文中的代码写出恶性病毒,造成的任何影响均与作者无关. 前言 病毒是什么?病毒就是一个具有一 ...

  3. 清华大一Python作业太难上热榜!只上3节课,手撸AI算法,网友:离本科毕设只差一篇万字论文...

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 太难了! ...

  4. 帝国的黄昏(4):彪悍的人生只需要一篇论文

    来源/作者:飞总聊IT 数据猿官网 | www.datayuan.cn 今日头条丨一点资讯丨腾讯丨搜狐丨网易丨凤凰丨阿里UC大鱼丨新浪微博丨新浪看点丨百度百家丨博客中国丨趣头条丨腾讯云·云+社区 1 ...

  5. 【C语言进阶】只看此篇,让你爱上指针(1)

    目录 前言 一.字符指针 二.指针数组 三.数组指针 1.数组指针的定义 2.&数组名VS数组名 3 .数组指针的使用 总结 前言 我们对指针已经有了初步的了解之后,我们对知识已经饥渴难耐了, ...

  6. caffe-源码学习——只看一篇就够了

    caffe-源码学习--只看一篇就够了 网络模型 说caffe代码难懂,其实关键点在于caffe中有很多基础的数学运算代码,如果能够对掌握这些数学运算,剩下的就是推公式了. 激活函数 sigmoid ...

  7. java设计模式中不属于创建型模式_23种设计模式第二篇:java工厂模式定义:工厂模式是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式...

    23种设计模式第二篇:java工厂模式 定义: 工厂模式是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 工厂模式主要是为创建对象提供过渡接口, ...

  8. getresourceasstream方法_【设计模式】第三篇:一篇搞定工厂模式【简单工厂、工厂方法模式、抽象工厂模式】...

    文章系列目录(持续更新中): [设计模式]第一篇:概述.耦合.UML.七大原则,详细分析总结(基于Java) [设计模式]第二篇:单例模式的几种实现And反射对其的破坏 一 为什么要用工厂模式 之前讲 ...

  9. 第3篇:Flowable快速工作流脚手架Jsite_关闭演示模式

    接上一篇:第2篇:Flowable快速工作流脚手架Jsite_配置项目 https://blog.csdn.net/weixin_40816738/article/details/103387623 ...

  10. 智慧能源篇 1 —— 合同能源管理(EMC)及其商业模式和税收优惠政策

    合同能源管理(EMC)及其商业模式和税收优惠政策 1  概述 合同能源管理(EPC,EnergyPerformance Contracting)是一种新型的市场化节能机制.其实质就是以减少的能源费用来 ...

最新文章

  1. 斯坦福马超:随机梯度下降,也爱躺「平」……why?
  2. minist读取一张图片
  3. iOS 进阶 第十四天(0416)
  4. eureka实例相关配置
  5. 在Linux服务器上配置phpMyAdmin--允许空密码
  6. ext 部署到 tomcat服务器下,通过http8080端口查看
  7. tstringlist怎么查看是否存在该数据_财务报表审计该如何进行?
  8. html css position,[CSS]CSS Position 详解
  9. QuillBot:又一个值得拥有的论文润色工具
  10. mysql字符型数字 按大小排序,类似if判断函数
  11. ●BZOJ 2393 Cirno的完美算数教室
  12. 2020年中国旅游行业网络关注度分析报告
  13. 微信小程序布局技巧(二)
  14. Sourcemod Plugins 开源插件整理
  15. 张爱玲经典爱情语录大全
  16. 解决 remote: Repository not found. fatal: repository 'https://github.com/xxxx/xxxx.git/
  17. 项目资源管理-日历图
  18. Ignite 数据网格快速学习(一)
  19. 【100 种语言速成】第 6 节:Tcl/Tk
  20. 企业级虚拟化实战之KVM——从KVM到云计算OpenStack

热门文章

  1. python实现sm3加密算法
  2. android studio x5,android studio中使用x5 webview来读写cookies的问题
  3. QT 5.9.0下载安装及配置教程
  4. 深入学习软件测试:混合正交表工具
  5. iOS下Safari自动化测试
  6. Matlab RRT算法三维轨迹规划及贪心算法轨迹优化
  7. 王者荣耀美化包制作教程(一;进阶)
  8. Vmware中安装win7虚拟机以及相关简单知识
  9. 小米note2鸿蒙ROM,小米Note2官方原版系统rom线刷刷机包_小米Note2线刷官方包
  10. 用python开发文本翻译小软件