Windows SDK笔记(五):非模式对话框

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

 

 

一、概述

使用DialgBox建立的对话框是“模式对话框”,只有关闭对话框后,程序的其他窗口才能进行操作。
与此相对应,存在“非模式对话框”,对话框建立后,并不强制要求用户立即反应,而是与其他窗口同时接受用户操作。

二、建立

非模式对话框使用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);
用户关闭对话框时,对话框消息处理函数将收到WM_CLOSE消息,接到后调用DestroyWindow以销毁非模式对话框。
Kinect for Windows SDK v2.0 开发笔记 ()环境 嗯,它来了,Windows for Windows v2。 7 阅读详情

相关推荐

SDK:用CreateWindowEx创建模态对话框

SDK下,我们通常用DialogBox来创建模态对话框。DialogBox并不是一个Win32的API,它实际上是一个宏,调用DialogBoxParam来创建对话框

VC++学习-基础篇(模态和模态对话框的创建和关闭)

编程环境:VS2013,MFC 转自: https://blog.csdn.net/qq_16334327/article/details/80708307 https://blog.csdn.net/djb100316878/article/details/42102723/ https://blog.csdn.net/silvervi/article/details/5027100 ...

深蓝 2071

WinAPI 对话框DialogBox、EndDialog、MAKEINTRESOURCE(资源转化宏)、窗口消息处理函数(返回值为FALSE)

WinAPI 对话框DialogBox、EndDialog、MAKEINTRESOURCE(资源转化宏)、窗口消息处理函数(返回值为FALSE)

单于的学习历程 734

使用Windows API实现模态窗口

所谓模态窗口(modal window),又叫做模式窗口,一般是指应用程序中那些任务比较紧要的窗口。只要它们存在,它们便会阻止用户访问其他窗口(或者是阻止用户访问其祖先窗口)。在windows中,使用DialogBoxParam显示的对话框就是模态的。虽然模态对话框windows中很普遍,但是并没有SDK级别的API,可以将一个窗口变为模态显示。不过在同为微软提供的MFC/WTL框架中有这样的A

青牛的专栏 1万+

C++模态对话框不显示

搞清楚了创建方法和过程,你也可以创建一个属于自己的对话框,显示自己需要的内容.为什么模态对话框可以显示,创建的模态对话框就不能显示呢?其二回收机制不一样,模态自动回收,模态需要手动添加回收.其一模态对话框,占据主窗口,不消失,其它界面无法响应.主要原因局部变量,换成全局变量或成员变量就可以了.模态创建,局部变量,DoModal就可以了。模态和模态的区别在哪里?会导致创建之后,界面不显示,模态创建,局部变量,

u011637657的博客 210

Windows 窗体显示的“模式方式”与“模式方式”

Windows中,显示存在作为窗体和对话框要么是有模式的,要么是无模式的。 “模式”窗体或对话框必须关闭或隐藏,然后您才能继续使用应用程序的其余部分。当我们要显示重要消息的对话框应始终是有模式的。例如 MessageBox 是一个可供您使用的有模式的窗体。 “无模式”窗体让您在此窗体与另一窗体之间变换焦点,而不必关闭初始窗体。 用户在该窗体显示的同时可继续在任何应用程序的其他位置工作

lyhoo163的专栏 5184

windows对话框窗口DialogBox模式对话框、EndDialog、CreateDialog模式对话框、DestroyWindow、WM_INITDIALOG

windows对话框窗口DialogBox模式对话框创建、EndDialog模式对话销毁、CreateDialog模式对话框、DestroyWindow模式对话框销毁、WM_INITDIALOG对话框创建消息与WM_CREATE消息不同

单于的学习历程 1271

【第七节】windows sdk编程Windows 中的对话框

虽然可以使用 `CreateWindow` 创建 `POPUP` 风格的窗口,但对话框程序通常包含多个控件,逐个创建控件会常繁琐。因此,微软提供了更为便捷的方式来创建对话框程序。通过资源编辑器,我们可以直接创建对话框资源,并通过资源 ID 来标识。在对话框上,可以拖拽各种控件(如 `Button`、`Edit`、`Static` 等),并通过属性调整对话框和控件的风格。随后,调用 `DialogBox` 或 `CreateDialog` 函数,利用资源创建出对话框

攻城狮7号的博客 1309

Windows SDK笔记()模式对话框

  一、概述对话框是一种特殊的窗口,它依据对话框模板资源而建立。它与一般的窗口有些不同,很多过程由系统完成了,虽然用户还是要提供一个消息处理函数,但在此消息处理函数中,不需要将不关心的消息交由缺省消息处理函数。实际上,调用缺省处理的过程又系统完成。 二、对话框消息处理函数对话框也需要用户提供一个消息处理函数,但这个处理函数没有普通窗口的消息处理函数"权利大"。对话框是一种系统定义的“窗口类

flashsj的专栏 1319

使用Windows SDK创建游戏辅助工具对话框

Windows SDK对话框使用实例

re1ife的博客 1295

Windows SDK笔记-2

Windows SDK笔记-2 2011年04月25日   [b]Windows SDK[/b][b]笔记[/b][b]([/b][b]四[/b][b])[/b][b]:模式对话框[/b][b][/b]   [b][/b][b]一、概述[/b]   对话框是一种特殊的窗口,它依据对话框模板资源而建立。   它与一般的窗口有些不同,很多过程由系统完成了,虽然用户还是要提供一个消息处理...

dpr905ds 153

Windows SDK笔记():使用对话框资源建立窗口

Windows SDK笔记():使用对话框资源建立窗口 2010年06月13日   [b]Windows SDK[/b][b]笔记[/b][b]([/b][b]六[/b][b])[/b][b]:使用对话框资源建立窗口[/b]   作者:[ft=#00ffcc,,   [b]Ⅰ[/b][b].[/b][b]使用对话框资源建立主窗口[/b]   [b]一、概述[/b]   在Cha...

rtm490av 294

Windows SDK 笔记

[转载]Windows SDK笔记 应程序需求需要重写窗体内子控件某一特定消息,可怜我苦苦找了二天也没找到资料,到CDSN提问也没有得到满意答案。 终归是上天不负有心人啊,终于被我发现了博主的一篇文章,总算是满意的解决问题了;在此感谢作者!! 原文:http://www.cppblog.com/Lee7/archive/2008/11/07/66226.html     Windo

人生代码,代码人生。。。 722

Windows SDK笔记

Windows SDK笔记 转载自:http://www.cppblog.com/Lee7/archive/2008/11/07/66226.html    Windows SDK笔记()Windows程序基本结构 一、概述 Windows程序具有相对固定的结构,对编写者而言,不需要书写整个过程,大部分过程由系统完成。 程序中只要按一定的格式填写系统留给客户的那一小部分。

程序猿的实验室 1180

[SDK] -模态对话框模态对话框

介绍了SDK 模态对话框模态对话框的区别,相关API讲解,及画面演示。

weixin_58038441的博客 677
上一篇: Windows SDK笔记(一):Windows程序基本结构
下一篇: Windows SDK笔记(二):在窗口上建立控件
flashsj
博客等级 码龄25年 1粉丝 13原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值