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

一、概述

控件的消息处理函数是由系统定义好了的,通常情况下,不需要自己提供。

但当需要对控件进行特殊控制时,可以提供一个消息处理函数,替换原来的消息处理函数。

自己的处理完成后,再调用控件的缺省消息处理。

二、相关函数

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
);

时间: 2024-10-18 10:50:13

Windows SDK笔记(三):定制控件消息处理函数的相关文章

Windows SDK笔记(经典--一定要看)

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

使用VB.NET开发定制控件

正常情况下,在开发.NET Windows应用程序时,我们都会用到System.Windows.Forms名字空间的控件.可供我们使用的控件很多,从Label.TextBox等简单的控件到MonthCalendar.ColorDialog等功能更丰富.更复杂的控件.尽管这些控件对于我们需要开发的大多数Windows应用程序已经足够好了,但有时我们也需要自己开发一些System.Windows.Forms名字空间不包括的控件.本篇文章将讲述如何使用VB.NET创建定制控件,尤其是在需要提供自己的图

一起学Windows Phone7开发(十三.三 输入控件)

在Phone7中主要的输入控件其实就有两个,一个是textbox,另一个就是password控件.这两个控件中尤其是TextBox控件有了很多新特性. 一.PasswordBox:密码框控件,用于输入自定义的遮罩字符的输入控件. <PasswordBox Grid.Row="1" Height="72" HorizontalAlignment="Left" Margin="12,284,0,0" Name="p

MFC 定制控件(Customize Control) 及 MFC CWnd和WIN32 HWND关联方法

MFC 定制控件(Customize Control) 及 MFC CWnd和WIN32 HWND关联方法  <参考资料 MSDN MFC TNO 15>  文档将概述MFC中定制自定义控件的3种方法: 拥有者绘制控件(Owner Drawing Control and Menu)   自绘制控件(self drawing control and menu)  和子集化(subclass)  1  使用MFC方法定制控件必备的几个基本概念:  控制定制风格的控件的几个标准Windows消息: 

孙鑫VC学习笔记:ActiveX 控件 .

孙鑫VC学习笔记:ActiveX 控件 作者:华仔 | 录入时间:2007-12-26 | 点击:313 次    打印此文章 | 字体:大 中 小 基本概念: 容器和服务器程序       容器应用程序时可以嵌入或链接对象的应用程序.Word 就是容器应用程序.服务器应用程序是创建对象并且当对象被双击时,可以被启动的应用程序.Excel 就是服务器应用程序.ActiveX 控件不能独立运行,它必须被嵌入容器应用程序中,和容器应用程序一起运行. -------------------------

与众不同windows phone (2) Control(控件)

介绍 与众不同 windows phone 7.5 (sdk 7.1) 之控件 Panorama - 全景图控件 Pivot - 枢轴控件 Map - bing 地图控件 WebBrowser - 内嵌浏览器控件 Other - 其他可用控件 示例 1.Panorama 的 Demo Panorama.xaml <phone:PhoneApplicationPage x:Class="Demo.Controls.Panorama" xmlns="http://schem

有没有制作象windows左边菜单那样的控件啊?点击一下弹出下面的子菜单,再点击一下缩回去

问题描述 有没有制作象windows左边菜单那样的控件啊?点击一下弹出下面的子菜单,再点击一下缩回去,toolkit里的那个accordion它那种效果我不太喜欢,觉得弹出得太慢 解决方案 解决方案二:在TrackPopupMenu时指定标志.解决方案三:你说的是抽屉的那个控件吗?DeveloperExpress这个控件就有,下一个解决方案四:JS可以实现......或者AJAX.NET里面有个控件可以实现解决方案五:呵呵,是win还是web啊.win的好像没有啊,只有自己写了如果有的话发出来啊

重新想象 Windows 8 Store Apps (13) - 控件之 SemanticZoom

原文:重新想象 Windows 8 Store Apps (13) - 控件之 SemanticZoom [源码下载] 重新想象 Windows 8 Store Apps (13) - 控件之 SemanticZoom 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 SemanticZoom 演示 SemanticZoom 的应用 通过 ISemanticZoomInformation 接口实现自定义 SemanticZoom 的 View 示例1.演示 Sem

windows api 通过句柄获取控件在窗口的坐标问题?

问题描述 windows api 通过句柄获取控件在窗口的坐标问题? NativeRECT sRECT = new NativeRECT(); //get 屏幕 RECT GetWindowRect(hWnd, out sRECT); 问题1:该方法有时获去到的值是负数 ? 求解答? ScreenToClient(hWnd, ref xx); 问题2:该方法获取到的值 一直是0 //结构体布局 本机位置 [StructLayout(LayoutKind.Sequential)] public s