Windows SDK笔记(三):定制控件消息处理函数

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

 

一、概述
控件的消息处理函数是由系统定义好了的,通常情况下,不需要自己提供。
但当需要对控件进行特殊控制时,可以提供一个消息处理函数,替换原来的消息处理函数。
自己的处理完成后,再调用控件的缺省消息处理。


二、相关函数
1.窗口类的属性可以通过GetWindowLong和SetWindowLong进行读取和设置

LONG GetWindowLong(
	HWND hWnd,  // handle to window
	int nIndex  // offset of value to retrieve
	);
	
LONG SetWindowLong(
  HWND hWnd,       // handle to window
  int nIndex,      // offset of value to set
  LONG dwNewLong   // new value
);
可以返回或设置以下内容:
nIndex值 意义
GWL_EXSTYLE 扩展风格
GWL_STYLE 风格
GWL_WNDPROC 消息处理函数
GWL_HINSTANCE 实例
GWL_ID 窗口ID
GWL_USERDATA 用户数据
DWL_DLGPROC 对话框消息处理函数
DWL_MSGRESULT
DWL_USER


所以使用

OldMsgProc = (WNDPROC)SetWindowLong (hControlWnd, GWL_WNDPROC, (LONG)MyMsgProc);
将控件消息处理函数替换成MyMsgProc,原处理函数被OldMsgProc记录。

2.调用消息处理函数

LRESULT CallWindowProc(
	WNDPROC lpPrevWndFunc,  // pointer to previous procedure
	HWND hWnd,              // handle to window
	UINT Msg,               // message
	WPARAM wParam,          // first message parameter
	LPARAM lParam           // second message parameter
);

三、示例
1.提供新处理函数
//记录原来处理函数的全局变量
WNDPROC OldMsgProc;

//新消息处理函数
LRESULT MyMsgProc(HWND hwnd,UINT message, WPARAM wParam, LPARAM lParam)
{
	switch(message)
	{
	case WM_LBUTTONDOWN:
		::MessageBox(NULL,"click!","",MB_OK);
	}
	//调用控件原来的消息处理函数
	return CallWindowProc(OldMsgProc,hwnd,message,wParam,lParam);
}

2.建立窗口后,更改消息处理函数
case WM_CREATE:
{
	HWND hControlWnd = CreateWindowEx(0,"BUTTON",
		TEXT("按钮(&A)"),
		WS_CHILD | WS_VISIBLE|BS_PUSHBUTTON,
		10,
		10,
		100,
		100,
		hwnd,
		(HMENU)1000,	//控件ID
		((LPCREATESTRUCT) lParam)->hInstance,	//实例句柄
		NULL);

	//嵌入新的消息处理函数
	OldMsgProc = (WNDPROC) SetWindowLong (hControlWnd, GWL_WNDPROC, (LONG)MyMsgProc);
}
return 0;
如何在postman中添加cookie信息步骤解析 主要介绍了如何在postman中添加cookie信息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 立即下载

相关推荐

Postman使用之添加cookie信息

Postman工具添加cookie信息

m0_47909382的博客 1万+

postman教程-10-使用cookie

上一小节我们学习了Postman Authorization授权的几种方法,本小节我们讲解一下Postman 使用cookie的方法。

米兔软件测试 8373

Postman加Cookie的方式

比如请求地址为:127.0.0.1:8085/ServiceConsumer/getInfo2?Cookie信息为:JSESSIONID=123456。

樱吹雪 6201

Postman中cookie的操作

还是以查询购物车内容为例:添加cookie时只修改目标中的部分,其他默认即可;cookie模板内容说明:# Cookie的内容Path=/;# 表示哪些路径下的文件有权限读取该 cookie# 网站域名# 过期时间说明:因为访问网站时候会保存到客户端很多的Cookie信息,在访问其他接口的时候,只带相关的Cookie就可以,不用带所有的Cookie访问。例如关于登陆授权的Cookie信息就是PHPSESSID,我们只保存这一条Cookie即可。

weixin_41812355的博客 9085

在 Postman 中配置 Cookie

手动添加:适合简单场景。Headers 添加:适合临时需求。自动管理:适合频繁使用 Cookie 的场景。预请求脚本:适合动态设置 Cookie。

men_nang的专栏 5126

【第十节】windows sdk编程:截获控件消息

控件消息处理函数通常由系统定义,开发者无需干预。但在需要实现特殊交互逻辑(如自定义点击效果、消息过滤或增强功能)时,可通过消息处理函数替换技术截获控件消息。此技术通过替换控件的默认消息处理函数(Window Procedure),在自定义处理完成后,调用原函数确保消息链完整。该技术广泛应用于界面美化、输入验证和功能扩展等场景。通过替换控件消息处理函数,开发者可以实现高度定制化的交互逻辑。关键点包括:(1)使用 `SetWindowLongPtr` 安全替换函数

攻城狮7号的博客 1252

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

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

攻城狮7号的博客 1320

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

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

攻城狮7号的博客 910

Windows SDK笔记

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

weixin_30549175的博客 122

Windows SDK编程之建立控件

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

酒鸿色的心专栏 828

定制控件消息处理函数

定制控件消息处理函数 Windows SDK笔记()定制控件消息处理函数作者:冯明德 一、概述控件消息处理函数是由系统定义好了的,通常情况下,不需要自己提供。但当需要对控件进行特殊控制时,可以提供一个消息处理函数,替换原来的消息处理函数。自己的处理完成后,再调用控件的缺省消息处理。 二、相关函数1.窗口类的属性可以通过GetWin...

weixin_30786617的博客 73

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

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

flashsj的专栏 1466

: Windows SDK笔记

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

akkcy26820的专栏 189

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

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

攻城狮7号的博客 1462

windows sdk 控件的创建处理

控件 我们可以把控件当成特殊的一类窗口,所以,创建控件与创建窗口一样,使用CreateWindow或CreateWindowEx函数创建控件 第二种方式是直接在资源视图中拖拽控件就可以了,这些都是windows利用资源脚本帮我们已经写好了这些代码,所以我们现在添加控件很方便,只需要处理好各种控件消息程序就好了 发送消息 SendMessage -- 不进消息队列,直接进入窗口过程函数...

qq_35426012的博客 441

Windows SDK笔记()Windows程序基本结构

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

flashsj的专栏 1854
上一篇: Windows SDK笔记(四):模式对话框
下一篇: 马走日棋盘算法
flashsj
博客等级 码龄25年 1粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值