Windows SDK之WM_CREATE消息与WM_INITDIALOG消息的比较

WTL在Windows CE与Mobile嵌入式开发中的实战价值 WTL(Windows Template Library)是一种基于ATL的轻量级C++ GUI框架,其核心原理是通过CRTP模板模式实现零虚函数、零运行时开销的窗口抽象,避免MFC的内存膨胀与消息映射性能损耗。在资源严苛的嵌入式场景中,WTL凭借静态链接、无DLL依赖、极小二进制体积(典型EXE仅180–240KB)和对WinCE/GWES子系统的深度适配,成为工业HMI、手持终端等长生命周期设备的关键UI方案。它支撑-20℃~60℃宽温运行、4MB堆限制、GDI句柄硬约束及实时响应(<150ms)等刚性 阅读详情

    首先引入网上搜索到的关于这两个消息比较靠谱的区别:

 

    在响应WM_CREATE消息响应函数的时候,对话框及子控件还未创建完成,亦是说只是通知系统说要开始创建窗口啦,这个消息响应完之后,对话框和子控件才开始创建。因此在此消息响应函数中无法对控件进行修改和初始化。
    而WM_INITDIALOG消息响应函数是在程序运行时,当其对话框和子控件全部创建完毕,将要显示内容的时候发送的消息。因此可以在WM_INITDIALOG消息响应函数中添加对编辑框控件的初始化和修改。

 

 

    其实,最权威的解释永远都来自MSDN,摘要如下:

 

    The WM_CREATE message is sent when an application requests that a window be created by calling the CreateWindowEx or CreateWindow function. (The message is sent before the function returns.) The window procedure of the new window receives this message after the window is created, but before the window becomes visible.

 

    The WM_INITDIALOG message is sent to the dialog box procedure immediately before a dialog box is displayed. Dialog box procedures typically use this message to initialize controls and carry out any other initialization tasks that affect the appearance of the dialog box.

 

 


 

 

顺便贴出MSDN给出的创建窗口以及对话框所使用的消息:

 

Dialog Box Messages

The following messages are used to create and manage dialog boxes and controls within dialog boxes.

DM_GETDEFID
DM_REPOSITION
DM_SETDEFID
WM_CTLCOLORDLG
WM_ENTERIDLE
WM_GETDLGCODE
WM_INITDIALOG
WM_NEXTDLGCTL

 

 

 

Window Messages 

The following messages are used to create and manage windows.

 

WM_ACTIVATE
WM_ACTIVATEAPP
WM_CANCELMODE
WM_CHILDACTIVATE
WM_CLOSE
WM_COMPACTING
WM_CREATE
WM_DESTROY
WM_ENABLE
WM_ENTERSIZEMOVE
WM_EXITSIZEMOVE
WM_GETFONT
WM_GETICON
WM_GETMINMAXINFO
WM_GETTEXT
WM_GETTEXTLENGTH
WM_INPUTLANGCHANGE
WM_INPUTLANGCHANGEREQUEST
WM_MOVE
WM_MOVING
WM_NCACTIVATE
WM_NCCALCSIZE
WM_NCCREATE
WM_NCDESTROY
WM_NULL
WM_PARENTNOTIFY
WM_QUERYDRAGICON
WM_QUERYOPEN
WM_QUIT
WM_SETFONT
WM_SETICON
WM_SETTEXT
WM_SHOWWINDOW
WM_SIZE
WM_SIZING
WM_STYLECHANGED
WM_STYLECHANGING
WM_THEMECHANGED
WM_USERCHANGED
WM_WINDOWPOSCHANGED
WM_WINDOWPOSCHANGING

 

 

VC 模式对话框和非模式对话框的创建,销毁和区别 在WIN32中,模式对话框的创建一般是使用DialogBox来进行创建的。而非模式对话框则是利用CreateWindow来创建的。在MFC或是WTL中,模式对话框一般是使用DoModal,而非模式对话框的创建则是使用Create。模式对话框创建后,程序的其他窗口便不能进行操作,必须将该窗口关闭后,其他窗口才能进行操作。而非模式对话框则无需这样,它不强制要求用户立即反应,而是与其他窗口同时接受用户操作。 Create的Dialog一般是modalless,如果你的程序本身就是只有一个Dialog,就无所谓了 阅读详情

相关推荐

VC6.0环境下实时拦截指定标题弹窗的MFC小工具(含完整可编译源码)

这个工具专为VC6.0开发环境设计,用MFC实现窗口级弹窗拦截功能。运行后,在界面输入框里填入广告窗、提示框等目标窗口的标题文字(支持多个标题,用空格或回车分隔),点击‘开始’就能实时生效。它在窗口刚创建、还没显示出来的时候就触发关闭操作,避免干扰用户操作。底层基于子类化或消息钩子技术,默认监听WM_INITDIALOG消息,适合拦截对话框类弹窗;如需扩展到普通窗口,只需把钩子条件改成WM_CREATE即可。工程结构清晰,包含StopCreate主程序、独立Hook封装类、完整UI控件和响应逻辑,所有代码均

garlic的博客 207

WM_CREATE与 WM_PAINT以及WM_INITDIALOG

程序如: switch(iMessage) {     case WM_CREATE:        ...         return 0;     case WM_PAINT:          ......          return 0;     case WM_SIZE:          ......          return 0;     defa

chunlovenan的专栏 3835

3DMax 8 SDK插件开发实战:从环境搭建到批量导出FBX的避坑指南

插件开发是扩展三维设计工具能力的关键技术,而SDK提供了访问软件底层接口的桥梁。理解DLL插件加载、类描述器与场景交互等核心原理,有助于构建稳定的批处理与自动化工具。在建筑可视化、城市规划等慢热行业中,大量存量项目仍依赖旧版3ds Max及配套插件,因此掌握老版本SDK的维护与排错技能,可有效应对打开文件闪退、安装错误1603、64位兼容限制等高频问题。针对批量导出FBX等常见需求,基于SDK编写插件能实现比脚本更可靠的流程控制。内容基于3DMax 8 SDK的开发实践,系统梳理插件开发的环境配置、最小实现

weixin_26767391的博客 270

WM_INITDIALOG与WM_CREATE消息的区别

WM_CREATE是所有窗口都能响应的消息,表明本窗口已经创建完毕(可以安全的使用这个窗口了,例如在它上面画控件等)。在响应WM_CREATE消息响应函数的时候,对话框及子控件还未创建完成,亦是说只是通知系统说要开始创建窗口啦,这个消息响应完之后,对话框和子控件才开始创建。因此在此消息响应函数中无法对控件进行修改和初始化。          WM_INITDIALOG消息是对话框才能收到的消息

wkh—江原 7459

深入解析Android Qcom Camera HAL3架构与Camx线程模块

本文深入解析了Android Qcom Camera HAL3架构与Camx线程模块的核心原理。文章以高通芯片平台为例,剖析了从按下快门到生成照片的完整Camera流程分析,重点阐述了Camx框架中线程池、消息队列及Fence同步机制如何协同工作,以实现高效、稳定的多线程并发图像处理,为相机性能优化提供理论基础。

weixin_29184075的博客 220

一文解释电路中常用电子元器件应用和选型01

电容和二极管是电路中最常用的两个电子元器件,种类和系列众多,这里简单总结一下应用场景和选型方式 电容(Capacitor) 电容的种类(20种以上)和应用非常广泛,但是我经常遇到的无非就是下面这几种: 应用 1.隔直流。 2.旁路(去耦) 3.耦合 4.滤波 5.温度补偿 6.计时 7.调谐 8.整流 9.储能 种类 1. 陶瓷电容 2. 云母电容 3. 铝电解电容 4. 钽

weixin_43904073的博客 2236

MFC问题篇——对话框“消息”中找不到WM_INITDIALOG

为对话框添加WM_INITDIALOG消息映射时,在“消息”中找不到WM_INITDIALOG。 ???????? 原因:VS2003开始已经将WM_INITDIALOG移到了重写里面,重写里面有一个OnInitDialog,对应了VC6.0的 WM_INITDIALOG消息。 ???????? 解决方案:在类视图上选中自己创建的对话框类,右键选择属性,属性视图上有六个按钮,点第六个重写按钮就显示了所有该类可以重载的函数...

WaitFoF 1935

Homebrew 必备软件清单:我的 macOS 开发环境搭建全记录

本文详细介绍了如何使用Homebrew在macOS上搭建高效的开发环境,包括基础配置、核心开发工具链、高效编码工具集等30个必备工具。通过Homebrew这一macOS缺失的包管理器,开发者可以一键安装命令行工具和GUI应用,大幅提升工作效率。文章还提供了日常维护命令和疑难问题解决方案,适合从新手到资深开发者的所有用户。

weixin_28836507的博客 353

详细解析 WM_INITDIALOG 消息

书籍:《Visual C++ 2017从入门到精通》的2.3.8 Win32控件编程环境:visual studio 2022内容:【例2.29】模态对话框说明:以下内容大部分来自腾讯元宝。

felicity_one的博客 1236

Xilinx ERNIC RoCEv2 FPGA实现与QP队列深度解析

本文深入解析Xilinx ERNIC RoCEv2在FPGA上的实现,重点剖析QP队列对的管理机制与深度优化策略。通过Verilog代码示例和工程实战,详细介绍了如何实现高吞吐量、低延迟的RDMA硬件卸载方案,为金融交易和数据中心应用提供性能优化指导。

solidity8miner的博客 876

CAD的.dwg文件导入 ArcGIS:高程分析、坡度分析、坡向分析

CAD的.dwg文件导入 ArcGIS,再进行高程分析、坡度分析、坡向分析。

My_Echo_yM的博客 7234

WM_CREATE,WM_INITDIALOG 区别,以及MFC应用程序中处理消息的顺序

响应WM_CREATE消息响应函数的时候,对话框及子控件还未创建完成,亦是说只是通知系统说要开始创建窗口啦,这个消息响应完之后,对话框和子控件才开始创建。因此在此消息响应函数中无法对控件进行修改和初始化。        而WM_INITDIALOG消息响应函数是在程序运行时,当其

1632

LAMMPS实战指南 - 从in文件到分子动力学模拟的完整流程解析

本文详细解析了LAMMPS分子动力学模拟的完整流程,从理解in文件的核心作用与基础结构开始,逐步指导如何创建模拟体系、选择势函数、进行能量最小化与初始化,并深入讲解了NVT/NPT系综弛豫与生产模拟的关键步骤。文章还提供了常见问题的避坑指南与实战技巧,帮助初学者快速掌握从编写in文件到成功运行模拟的全过程。

weixin_28365523的博客 393

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

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

单于的学习历程 1278

《多模态融合改进》支持目标检测、目标分割、OBB、姿态估计,配置教程

本文以为例,讲解如何配置,支持替换专栏里所有的改进方式。

Limiiiing的博客 795

高速特征金字塔多角度旋转模板匹配(工业零部件缺陷检测C++ Opencv版)

博主在性能较好的笔记本上测试算法全部执行效果大约为45ms,在一般配置的笔记本上博主在性能较好的笔记本上测试算法全部执行效果大约为130ms。下图即为实际检测效果。本文最后附有完整代码:Qt版和MFC版本(可直接运行)。...

认真努力,做一只会飞的毛毛虫。 5547

启动界面的实现(SDK)

这个是主窗口的消息处理函数 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { case WM_CREATE: //处理WM_CREATE消息,弹出对话框, 这里我就用了系统自己添加的关于窗口,你可以自己再添加个窗口 DialogBox(hInst, MAKEINTRES

philips的专栏 961

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

转载:WIN32 SDK编程拾遗-系统托盘图标

WIN32 SDK编程拾遗-系统托盘图标像QQ一样,按打杈按钮,就最小化到系统托盘。代码片断: /*声明一个NOTIFYICONDATA结构的实体(成员很多,有用的不多)*/ NOTIFYICONDATA nti; /*指定一个系统托盘上显示的ICON*/ nti.hIcon = LoadIcon(gInstance, MAKEINTRESOURCE(IDI_ICON)); /*让

bbdg的专栏 1549

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

MFC学习之模式对话框设计

   从昨天晚上就开始学习MFC的模式对话框设计,模式对话框在我以前学习WINDOWS API编程的时候就接触过---后来学习32位汇编也接触过。  先来看一下用API怎样来创建对话框。首先的有对话框资源,得到对话框资源名IDC_MYDLG,然后在程序里得有个对话框过程处理函数----不是消息函数,最后执行DialogBox,执行到此函数时,只有等到对话框关闭EndDialog后,该函数才会返

loop in codes 4140

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

MFC学习笔记1--Win32基本程序观念

MFC win32基本概念

又见炊烟 817

VC++ Win32 API实现图形界面计算器:从零构建桌面应用

图形用户界面(GUI)是桌面应用程序与用户交互的核心,其底层依赖于事件驱动编程和消息循环机制。在Windows平台,Win32 API是构建原生桌面应用的基石,它通过窗口、消息和图形设备接口(GDI)等核心概念,实现了从用户输入到界面响应的完整流程。掌握Win32 API不仅能深入理解Windows桌面程序的运行原理,更能锻炼对C++内存和资源(如窗口句柄HWND、GDI对象)的精细管理能力,这是编写高性能、低依赖桌面应用的关键。例如,在解决“Flutter打包如何集成VC++库”这类部署依赖问题时,对底层

weixin_33730836的博客 406

NSIS插件开发实战:扩展安装程序功能的高级技巧

NSIS(Nullsoft Scriptable Install System)是一款专业的开源Windows安装程序创建系统,以其小巧灵活的特点成为互联网分发的理想选择。对于想要扩展NSIS安装程序功能的开发者来说,插件开发是实现高级定制化的关键途径。本文将为您详细介绍NSIS插件开发的核心技巧和实战方法,帮助您掌握扩展安装程序功能的高级技能。 ## 📦 什么是NSIS插件? NSIS插件

gitblog_00189的博客 674

vs2013没有WM_INITDIALOG解决办法

VS2003后取消了WM_INITDIALOG消息,用OnInitDialog虚函数重载就行。 具体操作:选择你的对话框 ->右键->类向导->虚函数->找到OnInitDialog() 双击 加入->编辑代码

Richad的博客 2987

判断点是否在矩形内

第一种方法: if (!(m_nCol >= 150 && m_nRow >= 300) && (m_nCol <= 500 && m_nRow <= 340)) { HBRUSH hbrush;//创建新画刷 hbrush = CreateSolidBrush(RGB(255, 255, 255)...

hua_hengixn的博客 1299

对话框消息WM_INITDIALOG

WM_INITDIALOG:        对话框创建成功显示之前是WM_INITDIALOG

3330
上一篇: VC++6.0 Debug模式与Release模式的区别
下一篇: Linux(Fedora)下ls命令的简单实现
leopardaa521
博客等级 码龄19年 64粉丝 48原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值