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

From: http://www.vckbase.com/document/viewdoc/?id=1009

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


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

LONG GetWindowLong(HWND hWnd,  // handle to windowint nIndex  // offset of value to retrieve);LONG SetWindowLong(HWND hWnd,       // handle to windowint nIndex,      // offset of value to setLONG 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 procedureHWND hWnd,              // handle to windowUINT Msg,               // messageWPARAM wParam,          // first message parameterLPARAM 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;

(全文完)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/406322.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python tip

Python代码 def run(name,age,sex): print name :,name,age:,age,sex:,sex >>> run(xiaoming,namexiaoming,sexboy) SyntaxError: non-keyword arg after keyword arg def run(name,age,sex): print name :,name,age:,age,sex:,sex >>> run…

博客园开始对X++语言语法高亮的支持

关注X的博客园博友有福啦,现在发布X代码也同样可以实现语法高亮。目前仅支持SyntaxHighlighter插件。请看如下: public void update(boolean _updateParty true, boolean _updateContactPersonLastEdit true) {Address addressOrig this.orig();ttsbe…

win10网卡高级属性配置图解_简单设置,win10再也不会断网了

你多朋友反应win10会频繁断网,无任何规律。这也是导致很多人反感win10的原因之一。我百度了一下这个问题,解决问题的方法基本上都是关闭省电模式,重装网卡驱动之类的答案。但都解决不了根本问题。虽然不清楚深层次的断网原因,但通…

为子控件添加自定义绘图方式

在MFC应用程序中,有时会遇到需要让指定的控件实现自绘。但是看该控件的事件,没有一个像是能承担这种责任的。 我们都知道控件也是窗口,也都有消息循环。所以: 方案一:写个新类,继承自某个窗口类&#xff…

根据父类id查询所有的父级_父类子类抽象类,super final 重写方法,搞懂继承中复杂的知识点...

继承继承(Inheritance)可以实现类之间共享属性和方法,是面向对象编程的另一个特性使用继承可以最大限度地实现代码复用。定义:继承就是在已有类的基础上构建新的类,一个类继承已有类后,可以对被继承类中的属性和方法进行重用。继承…

【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十八:SDRAM模块① — 单字读写...

实验十八:SDRAM模块① — 单字读写 笔者与SDRAM有段不短的孽缘,它作为冤魂日夜不断纠缠笔者。笔者尝试过许多方法将其退散,不过屡试屡败的笔者,最终心情像橘子一样橙。《整合篇》之际,笔者曾经大战几回儿,不…

gateway请求拦截_一种网关对用户请求进行统一拦截判断是否放行的方法与流程...

本发明涉及互联网技术领域,特别涉及一种网关对用户请求进行统一拦截判断是否放行的方法。背景技术:随着互联网发展的越来越快,技术也更新的非常频繁,比如开发一个系统的架构由最初始的单个服务器就能处理演变到现在的利用springcl…

spark sql 上个月_Spark学习之路 (十八)SparkSQL简单使用

一、SparkSQL的进化之路1.0以前:Shark1.1.x开始:SparkSQL(只是测试性的) SQL1.3.x:SparkSQL(正式版本)Dataframe1.5.x:SparkSQL 钨丝计划1.6.x:SparkSQLDataFrameDataSet(测试版本)x:SparkSQLDataFrameDataSet(正式版本)SparkSQL:还有其他的…

GetClientRect相当于GetWindowRect和ScreenToClient区别

From: http://www.cnblogs.com/yongtaiyu/archive/2011/05/18/2049554.html GetWindowRect是取得窗口在屏幕坐标系下的RECT坐标(包括客户区和非客户区),这样可以得到窗口的大小和相对屏幕左上角(0,0)的位置。 GetClientRect取得窗口客户区(…

xxljob 配置具体定时任务_记一次xxl-job定时任务没有触发的问题

当初选了xxl-job就是因为它的触发机制比较靠谱,到点准时发,而且有日志可以看。 昨天突然发现部署在一台本地机器上的xxl-job到点并没有触发,且没有任何日志。通过管理页面查询触发日志,发现日志还是有的,只是和筛选条件不甚匹配。比如选取了昨天的日志,结果集中包含了今天…

TOMCAT启动完成但是ECLIPSE仍然显示starting....

最近重新部署了一个TOMCAT服务,但是启动碰到个问题,虽然TOMCAT控制台已显示启动成功,但是ECLIPSE右下角仍然一直显示STARTING,最后TOMCAT超时,启动失败。之前以为是拷贝工程的问题,但其实是SERVER配置的问题…

例解 autoconf 和 automake 生成 Makefile 文件

From: http://www.ibm.com/developerworks/cn/linux/l-makefile/ 简介: 本文介绍了在 linux 系统中,通过 Gnu autoconf 和 automake 生成 Makefile 的方法。主要探讨了生成 Makefile 的来龙去脉及其机理,接着详细介绍了配置 Configure.in 的方…

爱慕内衣信息化颠覆流程重构供应链

通过IT,爱慕内衣进行了供应链流程的颠覆和重构。在北京慕集团首席信息官赵先生脑海中,一直有着这样一幅“大图景”:只要需要,老总在自己的办公室里能看到每一寸原料的采购情况,每一件成衣的生产和销售情况,…