Windows SDK笔记(二):在窗口上建立控件

WM_CREATE消息的处理过程 今天在看的时候, 有一个小问题困扰了我很长时间.书中写到在CreateWindowEx函数中会发出WM_CREATE消息, 之后会在CmainFrame::OnCreate中处理. 我突然想到, 在CreateWindowEx返回之前,WM_CREATE能被处理吗?如果能处理,那么此时岂不是有另外一个线程(非主线程)在处理消息? 如果不能被处理,那么此时发出WM_CREATE消息的意义何在?(还要 阅读详情

 



控件是子窗口,它们是系统已经定义好的窗口类,因此不需要注册、
也不需要写消息处理函数。
在主窗口得到WM_CREATE消息时,建立子窗口即可。


二、实例

//参数:窗口句柄,消息,消息参数,消息参数
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	//处理感兴趣的消息
	switch (message)
	{
	case WM_CREATE:
		CreateWindow(TEXT("BUTTON"),		//控件"类名称"
				TEXT("按钮(&A)"),
				WS_CHILD | WS_VISIBLE |BS_PUSHBUTTON,
				10,
				10,
				100,
				100,
				hwnd,
				(HMENU)1000,			//控件ID
				((LPCREATESTRUCT) lParam)->hInstance,	//实例句柄
				NULL);

		return 0;
	case WM_DESTROY:
		//当用户关闭窗口,窗口销毁,程序需结束,发退出消息,以退出消息循环
		PostQuitMessage (0) ;
		return 0 ;
	}
	//其他消息交给由系统提供的缺省处理函数
	return ::DefWindowProc (hwnd, message, wParam, lParam) ;
}
三、关于WM_CREATE消息

WM_CREATE 的lParam参数将会传入一个建立时信息结构指针(LPCREATESTRUCT)。
结构中包含了一些有用信息(窗口建立时的参数)。
typedef struct tagCREATESTRUCT {
    LPVOID    lpCreateParams; 
    HINSTANCE hInstance;		//实例句柄 
    HMENU     hMenu;			 
    HWND      hwndParent; 
    int       cy; 
    int       cx; 
    int       y; 
    int       x; 
    LONG      style; 
    LPCTSTR   lpszName; 
    LPCTSTR   lpszClass; 
    DWORD     dwExStyle; 
} CREATESTRUCT, *LPCREATESTRUCT; 
四、控件与父窗口的协作

1.控件上发生动作时,将向父窗口发送通知消息WM_COMMAND。
WM_COMMAND:
HIWORD(wParam):通知码(notification code)
LOWORD(wParam):控件ID
(HWND)lParam: 控件句柄

除了WM_COMMAND外,每种控件还有可能有其他的通知消息(如WM_DRAWITEM)。

2.父窗口需要控制控件时,向控件发控件消息。
事先应记录下控件句柄,或由ID获取控件句柄

3.备注:
各种控件的通知消码和控制消息可由
MSDN-> Platform SDK-> User Interface Services->Windows User Interface->Controls
查得。

五、控件"类名称"

1.标准控件
BUTTON :按钮
COMBOBOX :复合框
EDIT :编辑
LISTBOX :列表
RichEdit :Rich Edit version 1.0
RICHEDIT_CLASS :Rich Edit version 2.0
SCROLLBAR :滚动条
STATIC :静态

2.外壳附带的公用控件
注:建立前需要用InitCommonControlsEx进行初始化

INITCOMMONCONTROLSEX icex;// Ensure that the common control DLL is loaded. 
icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
icex.dwICC  = ICC_LISTVIEW_CLASSES;
InitCommonControlsEx(&icex); 

HWND hWndListView =CreateWindowEx(0,WC_LISTVIEW,  //WC_LISTVIEW不需要加引号
	TEXT(""),
	WS_CHILD | WS_VISIBLE|WS_BORDER | LVS_ICON | LVS_EDITLABELS | WS_EX_CLIENTEDGE ,
	10,
	10,
	100,
	100,
	hwnd,
	(HMENU)1000,		//控件ID
	((LPCREATESTRUCT) lParam)->hInstance,	//实例句柄
	NULL);
}
ANIMATE_CLASS
DATETIMEPICK_CLASS
HOTKEY_CLASS
MONTHCAL_CLASS
PROGRESS_CLASS
REBARCLASSNAME
STATUSCLASSNAME
TOOLBARCLASSNAME
TOOLTIPS_CLASS
TRACKBAR_CLASS
UPDOWN_CLASS
WC_COMBOBOXEX
WC_HEADER
WC_IPADDRESS
WC_LISTVIEW
WC_PAGESCROLLER
WC_TABCONTROL
WC_TREEVIEW

3.特殊窗口
MDIClient :MDI客户区窗口
ComboLBox :The class for the list box contained in a combo box.
DDEMLEvent :Windows NT/2000: The class for DDEML events.
Message :Windows 2000: The class for a message-only window.
#32768 :The class for a menu.
#32769 :The class for the desktop window.
#32770 :The class for a dialog box.
#32771 :The class for the task switch window.
#32772 :Windows NT/2000: The class for icon titles.

大模型训练流程(四):PPO强化学习实战与调优指南 本文详细解析了大模型训练中PPO强化学习的实战应用与调优技巧,涵盖RLHF核心原理、PPO算法实现及显存优化策略。通过具体案例和代码示例,指导开发者有效提升模型回答质量与安全性,避免常见训练陷阱。 阅读详情

相关推荐

一篇NS SAR ADC的学习记录

一篇NS SAR ADC的学习记录 内容包含: OverSampling Noise Shaping Dynamic Amplifier DAC with Redundancy 最近看了些有意思的SAR ADC结构,但是因为确实对模拟这个领域不太熟,导致了一系列的级联查找,最终达到了一个大概能懂的状态,为了理清思路,顺便别让看了这么些天的东西浪费了,还是计划写篇文章。 ps:由于不是一篇特别正紧的报告,参考文献就写的比较随便,且我还是个做数字的 A 13.5-ENOB, 107-μW Noise-Sha

weixin_45669724的博客 8712

WIN32 创建控件

控件也是窗口,只不过是被微软预先创建好的一种窗口类,比如button就是一个类名为“BUTTON”的类。既然控件实际上是窗口,当然也是用CreateWindow或者CreateWindowEx这个函数来完成的。 HWND CreateWindow( LPCTSTR lpClassName, //控件的类名 LPCTSTR lpWindowName, //控件的名字或者文本 DWORD dwStyle, //控件风格 int x,...

sinat_38363122的博客 1569

SARscape的DInSAR全流程-以西安市隋大兴唐长安城遗址为例

通过DInSAR对西安市隋大兴唐长安城遗址开展的年度周期性监测,发现成因是地质内部构造断裂带活动所导致的地面产生物理空间上的形变,而地面的沉降与抬升是直接影响城市发展与文化遗产保护最为常见的缓变型不可逆地质灾害。西安市地处汾渭断陷盆地中部,受临潼-长安断裂带影响,导致区域内构造活动较为强烈。由于早年西安市地表水资源匮乏,从上世纪50年代末开始大量开采地下水资源以满足城市人口不断扩张的需求,从而导致地下承压含水层水位急速下降,形成多个局部沉降中心(八里村、西工大、电子城等)。

2301_77687129的博客 5815

【免杀前置课——Windows编程】八、控件的使用(控件的创建方式、操作控件的相关函数、控件的使用场景、控件分类、标准控件、实现选中选项后弹出已选选项)(附代码)

【免杀前置课——Windows编程】八、控件的使用(控件的创建方式、操作控件的相关函数、控件的使用场景、控件分类、标准控件、实现选中选项后弹出已选选项)(附代码)

m0_62783065的博客 412

在C++中,NULL和nullptr有什么区别?

这两个定义导致了冲突,C++中的NULL如果和C语言一样也是(void *)0指针,而C++不允许void*隐式转换成其它指针类型,那NULL就无法表示空指针了。因此,使用 nullptr可以增加代码的清晰性,避免类型安全问题。即使在混合C++和C代码时,nullptr也提供了一个明确无误的空指针表示,达到兼容的目的。C++11 引入 nullptr 彻底解决了这些问题,提高语言的安全性、清晰性和现代性。在了解NULL和nullptr背后的故事之后,相信大家以后再也不会用NULL了。

hebhljdx的博客 678

代谢组数据分析(三十一):空间代谢组学分析从数据加载到通路分析的流程解析

空间代谢组学是一种先进的技术,能够在组织切片上以高分辨率检测代谢物分布,为理解生物代谢过程提供新视角。其分析流程包括数据获取、预处理、代谢物注释、差异表达分析、可视化、通路分析、聚类分析及空间相关代谢物分析等关键步骤。这些步骤帮助研究人员从海量数据中提取有价值信息,揭示代谢物的空间分布规律,发现潜在生物标志物,探索代谢通路调控机制。例如,SpaMTP等工具为全流程分析提供了强大支持,助力研究人员高效处理数据,深入理解代谢过程,为生物学研究和临床应用提供重要依据。

专注生信领域 919

分享一种最简单的STemWin自定义控件实现方法

笔者把STemWin官方给的自定义控件demo进行了精简,得出了这个最简单的自定义控件实现方法,所有代码如下:#include <string.h> #include "GUI.h" #include "WM.h" typedef struct { char str[50]; } MYWIDGET_Obj; static void _cbMyWidget(WM_MESSAGE ...

qq_16597387的博客 4293

一、DMSP/OLS、NPP/VIIRS等夜间灯光数据能源碳排放空间化理论介绍

利用DMSP/OLS、NPP/VIIRS等夜间灯光数据开展能源碳排放空间化之前,需要区分与利用夜间灯光数据GDP空间化,两者操作流程并无较大区别,只是GDP空间化选择夜间灯光指数种类有比较多包括总灯光指数、平均灯光指数、综合灯光指数等,但是能源碳排放过程中通常只选择总灯光指数,其次能源碳排放空间化可能对于某些省份工业相对没有那么发达的区域,构建模型时候拟合效果比较差,也就是R方低一些或者显著性差。针对上述拟合度低的情况诸多学者前辈从多个方面开展研究进行提升。

端木宛白的博客家园 4924

有关wm_create消息

msdn中查询有关wm_create消息的结果如下:The WM_CREATE message is sent when an application requests that a window be created by calling the CreateWindowEx or CreateWindow function. The window procedure of the new

bitwjg的专栏 1812

3.PCIe协议分析1-预备知识点

PCIE协议分析1主要讲一下四方面: PCI-E配置空间 PCI-E地址映射 PCI-E Bar空间 PCI-E层级结构详谈 (1)PCIE配置空间 我们过来学习PCIE的同学应该都接触各种类型的功能芯片吧,这些功能芯片连接在电路里面我们可以认为它是一个外部设备,这些设备里面有自己独有的寄存器区域,比如SDRAM里面的ID寄存器或者其他配置寄存器。好的,其实我们PCIE板卡也相当...

一个早起的程序员 4145

第二节:Vben Admin 登录逻辑梳理和对接后端准备

第一节,我们已经配置了前端环境,运行起来了我们的Vben Admin的项目。本节内容,我们先熟悉下项目的目录和文件,然后开始准备对接后端程序路由在 src/router页面在 sr/views本节前端登录逻辑梳理完成了,后端只要在/api/login 接口编写返回逻辑,前后段就可以打通了,具体详情我们下一节介绍。

cuiwin的专栏 5084

Windows SDK编程之建立控件

 Windows SDK编程之建立控件一、概述   控件是子窗口,它们是系统已经定义好的窗口类,因此不需要注册、也不需要写消息处理函数。  在主窗口得到WM_CREATE消息时,建立子窗口即可。  二、实例 //参数:窗口句柄,消息,消息参数,消息参数LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam,

酒鸿色的心专栏 832

【网络安全 | 渗透工具】Githack工具安装及使用教程详析

本文仅分享Githack工具基本安装及使用相关知识不承担任何法律责任。Git是一个非常流行的开源分布式版本控制系统,它被广泛用于协同开发和代码管理。许多网站和应用程序都使用Git作为其代码管理系统,并将其部署到生产环境中以维护其代码库。然而,在配置不当的情况下,可能会导致.git文件夹被直接部署到线上环境中,这可能会导致Git泄露问题。可通过githack下载泄露的Git存储库,以获取包含未加密密码、凭据和敏感信息的站点代码库。使用githack下载Git存储库的方法有两种。本文仅分享。

等风来 3万+

【第五节】windows sdk编程:windows 控件基础

控件是 Windows 系统内置的窗口类,它们只能是某个窗口的子窗口。因此,创建控件时必须使用 `WS_CHILD` 风格。控件的窗口类由系统预先注册,因此我们不需要手动注册窗口类。控件的消息响应函数由 Windows 提供,而不是我们自己编写的。控件的行为由其内置的窗口回调函数处理。当控件发生某些行为时(如被点击或需要重绘),它会向其父窗口发送通知消息。

攻城狮7号的博客 1325

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

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

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

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

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

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

  一、概述在Charles Petzold的书中,介绍了一种直接利用对话框资源建立主窗口的方法。使用这种方法,可以方便的在主窗口中安排子控件,而代码的其他部分跟用普通窗口时一样。我们知道,对话框是系统预先定义的“窗口类”,它有自己的窗口处理函数,我们自己写的对话框消息处理函数并不是真正的窗口消息处理函数。但我们可以在对话框模板脚本中,指定这个对话框使用我们自己定义的窗口类,而不是系统的对

flashsj的专栏 1359

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

转: Windows SDK笔记

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

akkcy26820的专栏 190

Windows SDK笔记

Windows SDK笔记(一):Windows程序基本结构 一、概述Windows程序具有相对固定的结构,对编写者而言,不需要书写整个过程,大部分过程由系统完成。程序中只要按一定的格式填写系统留给客户的那一小部分。所需要完成的有:窗口类的定义、窗口的建立、消息函数的书写、消息循环。 二、消息处理函数Windows程序是事件驱动的,对于一个窗口,它的大部分例行维护是由系统维护的。没个窗口...

weixin_30549175的博客 124

【第八节】windows sdk编程:Windows 控件的使用

以下是一个综合案例代码,涵盖了 **按钮**、**编辑框**、**静态文本**、**组合框**、**列表框**、**单选框**、**复选框** 和 **图片控件** 的使用。- 找到 **Dialog** 文件夹,双击一个已有的对话框资源,或右键点击 **Dialog** 文件夹,选择 **添加资源** → **Dialog** → **新建**,创建一个新的对话框。(2)加载并显示图片:其次,调用 `LoadBitmap` 函数将图片加载,并获取控制此图片的句柄,句柄类型为 `HBITMAP`。

攻城狮7号的博客 929

【第九节】windows sdk编程:通用控件的使用

通用控件是Windows操作系统提供的一组扩展控件,其中一些控件的使用相对简单,而另一些则较为复杂。对于复杂的通用控件,例如列表控件(List Control)和树控件(Tree Control),它们与父窗口的通信不再通过`WM_COMMAND`消息,而是通过`WM_NOTIFY`消息来实现。我们可以通过两种主要方式来创建通用控件:动态创建和对话框拖拽。根据具体需求,开发者可以灵活选择适合的方式。

攻城狮7号的博客 1477

Windows SDK 笔记

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

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

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
上一篇: Windows SDK笔记(五):非模式对话框
下一篇: Windows SDK笔记(六):使用对话框资源建立窗口
flashsj
博客等级 码龄26年 1粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值