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

Windows SDK 01 简单的Dialog窗口 相关函数 WinMain函数 #include // 引用windows编程所需的头文件 int WINAPI WinMain( HINSTANCE hInstance, // 当前实例的句柄 HINSTANCE hPrevInstance, // 父级示例的句柄 LPSTR lpCmdLine, // 获 阅读详情

Windows SDK笔记(四):模式对话框
作者:冯明德

一、概述

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

二、对话框消息处理函数

对话框也需要用户提供一个消息处理函数,但这个处理函数没有普通窗口的消息处理函数"权利大"。
对话框是一种系统定义的“窗口类”,它已经定义好了对应的消息处理函数。客户所作的消息处理函数,并不是直接与窗口连接,而是对对话框消息处理函数的一种补充,或者说“嵌入”。
因此,对话框处理函数不需要调用“缺省消息处理函数”。
当有消息被处理时,返回TRUE,没有消息需要处理时,返回FALSE,此时退出用户消息处理函数后,系统会去调缺省消息处理函数。

//对话框消息处理函数
//返回值类型为BOOL,与普通窗口处理函数不同。
BOOL CALLBACK AboutDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{

     switch (message)
     {
     case WM_INITDIALOG :
          return TRUE ;	//返回真,表示消息被处理了。
          
     case WM_COMMAND :
          switch (LOWORD (wParam))
          {
          case IDOK :
          case IDCANCEL :
               EndDialog (hDlg, 0) ;	//使用EndDialog关闭对话框
               return TRUE ; //返回真,表示消息被处理了。
          }
          break ;
     }
     return FALSE ; ////返回假,表示消息未被用户处理,又缺省消息处理函数去处理。
}

三、模式对话框建立

使用DialogBox。

INT_PTR DialogBox(
	HINSTANCE hInstance,  // handle to module
	LPCTSTR lpTemplate,   // dialog box template
	HWND hWndParent,      // handle to owner window
	DLGPROC lpDialogFunc  // dialog box procedure
);

例:

case WM_COMMAND:
switch(LOWORD(wParam))
{
		case ID_ABOUT:
               DialogBox (hinst, MAKEINTRESOURCE(IDD_ABOUT), hwnd, AboutDlgProc) ;
			break;
}
return 0;

四、模式对话框与程序的交互

模式对话框中,可以对程序中的数据进行更改。
结束对话框时,在EndDialog第二个参数中传入退出参数
这个参数将被DialogBox作为返回值,然后对话框的用户根据此返回值作相应的操作。

1.初始化
对话框消息处理函数中,在接到WM_INITDIALOG消息时,作一些初始化工作。
如从全局变量读取初始值来设置各控件状态。

2.退出时
若退出时,更改需要生效,(如按了“确定”),则根据控件状态设置全局变量,并相应的在EndDialg中使用一个表示成功的值(如TRUE)。
若更改不需要生效(如按了“取消”),则不保存结果,并相应的在EndDialg中使用一个表示取消的值(如FALSE)。

3.对话框用户作出反应
根据DialogBox的返回值不同,而进行不同的操作
如,返回TRUE时,重绘窗口:

if (DialogBox (hInstance, TEXT ("AboutBox"), hwnd, AboutDlgProc))
	InvalidateRect (hwnd, NULL, TRUE) ;
Kinect for Windows SDK v2.0 开发笔记 (一)环境 嗯,它来了,Windows for Windows v2。 7 阅读详情

相关推荐

用Windows API创建简单的菜单和对话框。

非常简单的Windows程序,对于菜单和对话框的编写一目了然。适合初学者对于Windows编程的学习。

windows sdk 资源和对话框创建

资源 概念 资源:所有除代码以外的东西都可称为资源 ID:SDK所有添加的资源都可以设置唯一的ID 若用字符串命名资源ID,需要字符串外加入双引号("") 可用指定API将资源ID转换为对应指针 宏函数MAKEINTRESOURCE(MN_EDIT)// ID转指针 带资源的EXE文件生成流程 WM_COMMAND在窗口菜单程序中使用 // Win32Test.cpp ...

qq_35426012的博客 942

弹出的消息框或另一个窗口在父窗口中间

弹出的消息框或另一个窗口在父窗口中间,希望大家喜欢。

widowsSDK创建对话框的三种方法

自己看对话框也有些时间了,下面来总结下对话框的一些知识点。 对话框有模态对话框和非模态对话框两种基本形式。 非模态对话框允许我们把输入焦点切换到同一个应用程序的另一个窗口,该对话框也无需关闭,这个比较普遍。 模态对话框主要是两类:应用程序模式对话框和系统对话框。应用程序对话框不允许我们在本应用程序中切换输入焦点,但是可以切换到其他应用程序中去,比如点击记事本的文件打开按钮,会弹出选择打开文件...

emowuyi 400

SolidWorks草图绘制实战:如何用图片参考快速搞定智能小车底板设计

本文详细介绍了在SolidWorks中利用图片参考进行草图绘制的实战方法,以智能小车底板设计为例,帮助设计师快速将概念转化为精准三维模型。通过插入、对齐参考图片并高效描图,结合参数化约束与尺寸驱动,大幅提升设计效率和准确性,尤其适合新手入门与老手优化工作流。

rust6ferris的博客 219

事件相机数据处理实战:从原始事件流到视觉表征的三种核心方法

本文深入探讨了事件相机数据处理的核心环节,即如何将异步、稀疏的原始事件流转换为深度学习模型可处理的视觉表征。文章重点解析了三种核心方法:逐通道累积、体素网格双线性插值和对称累积事件表示,详细阐述了其原理、代码实现、可视化效果及各自的适用场景,为事件相机在目标识别、光流估计等视觉任务中的高效应用提供了实战指南。

read5的博客 439

Win32API:CreateDialog、DialogBox、DialogProc

一、CreateDialog   函数功能:该宏在内存中从对话框模板上创建一个无模式对话框。此宏使用CreateDialoglndirectparam 函数。     函数原型:HWND CreateDialoglndirect(HINSTANCE hlnstance,LPCDLGTEMPLATE IPTemplate,HWNDhWndParent,DLGPROC IPDialogFunc

一只奔跑的蚂蚁 6909

Arcgis 10.3 与 ArcGIS Engine 10.3 安装与破解

Arcgis 10.3 与 ArcGIS Engine 10.3 安装与破解

weixin_52127098的博客 4726

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

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

攻城狮7号的博客 1321

shopro 商城,2025年新申请的微信支付提示失败,支付提示 Get Wechat Public Cert Error 问题的修复办法

shopro 商城,最近新申请的微信支付商户 支付提示 Get Wechat Public Cert Error 问题的修复办法

行走的卡路里 1245

方差迭代计算公式

方差迭代计算过程推导术语约定递推公式过程推导 术语约定 (1)En=1n∑i=1nxi E_n =\frac{1}{n} \sum_{i=1}^{n}x_i \tag{1} En​=n1​i=1∑n​xi​(1) (2)F(n)=∑i=1n(x2−En) F(n) = \sum_{i=1}^{n}{(x^2-E_n)} \tag{2} F(n)=i=1∑n​(x2−En​)(2) (3)V(n)...

weixin_44479136的博客 7921

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

   一、概述使用DialgBox建立的对话框是“模式对话框”,只有关闭对话框后,程序的其他窗口才能进行操作。与此相对应,存在“非模式对话框”,对话框建立后,并不强制要求用户立即反应,而是与其他窗口同时接受用户操作。 二、建立非模式对话框使用CreateDialg建立。可以在WinMain中建立主窗口后建立,对话框句柄保存备用。hDlgModeless = CreateDialog (

flashsj的专栏 1649

【迁移学习】域对抗迁移网络 DANN

Domain-Adversarial Training of Neural Networks

这个博客太懒了什么都没说 8417

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

Windows SDK对话框使用实例

re1ife的博客 1299

云端办公文件存储与访问全攻略:选型、预算、实操一本通

随着远程办公、多设备协作成为常态,“文件云端存储、随时调用” 已成为提升办公效率的核心需求。本文从用户实际场景出发,系统拆解云端存储的选型逻辑、全场景费用预算,重点解答 “文件能否直接在线打开” 的核心疑问,并提供实操技巧与安全保障方案,覆盖个人、小团队(含兼职)、企业全维度需求,帮助不同规模用户快速搭建高效、低成本的云端办公体系。

hy行者勇哥的博客 1241

YOLOv10改进 | 代码逐行解析(三) | YOLO中的Mosaic增强详解(新手入门必读系列)

本文给大家带来的是YOLOv10中的Mosaic增强代码的详解,可能有部分人对于这一部分比较陌生,有的读者可能知道Mosaic增强但是不知道其工作原理,具体来说Mosaic增强就是指我们的数据集中的图片在输入给模型之前的一个处理过程(我们的图片并不是直接就输入给模型了,大家的训练结果中的结果检测图片大家可以看到数据集中多个图片会组合在一起这就是简单的Mosaic增强),下面我就来讲解一下其在YOLOv10中工作原理和代码定义,下面图片为一个Mosaic增强后的图片。​。

Snu77的博客 2077

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

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

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 154

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SDK:用CreateWindowEx创建模态对话框

PomeloWu原创©,转载请注明出处 SDK下,我们通常用DialogBox来创建模态对话框。DialogBox并不是一个Win32的API,它实际上是一个宏,调用DialogBoxParam来创建对话框。我们能在中看到这样的宏定义:#define DialogBoxA(hInstance, lpTemplate, hWndParent, lpDialogFunc) /Dia

Pomelo Wu的VC学习专栏 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

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

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

单于的学习历程 1278

Windows SDK 笔记

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

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

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

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

weixin_58038441的博客 683

Windows SDK(八)模态对话框与非模态对话框

对话框分为模态对话框和非模态对话框两种形式模态对话框:自建消息循环,并且通过EnableWindow禁用了父窗口的键盘鼠标输入达到阻塞父窗口的功能。当有对话框,父窗口阻塞时,透过对话框是无法对父窗口进行操作的,这也就是父窗口堵塞的结果非模态对话框:与父窗口共用消息循环,没有父窗口堵塞,其余和模态对话框一致在应用前,我们手动在Windows桌面程序创建的窗口的顶层菜单上做出如下修改并将模态对话框ID修改为ID_DLG1,非模态对话框ID修改为ID_DLG2。

2301_78838647的博客 523
上一篇: Windows 2000下Api函数的拦截分析
下一篇: Windows SDK笔记(五):非模式对话框
cpusoft
博客等级 码龄22年 8粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值