比来正在捣腾winfrom,遇到了关于window动静这一块的对象,正好在网上看到“微wx笑”的总结。
原文地点:
-----------------------------------------------------以下是原文内容---------------------------------------------------
不要以为下面的对象只有C++中才会用到哦!
动静,就是指Windows发出的一个通知,报告应用措施某个工作产生了。例如,单击鼠标、转变窗口尺寸、按下键盘上的一个键城市使Windows发送一个动静给应用措施。
动静自己是作为一个记录通报给应用措施的,这个记录中包罗了动静的类型以及其他信息。例如,对付单击鼠标所孕育产生的动静来说,这个记录中包罗了单击鼠标时的坐标。这个记录类型叫做TMsg,它在Windows单元中是这样声明的:
type
TMsg = packed record
hwnd: HWND; //窗口句柄
message: UINT;//动静常量标识符
wParam: WPARAM ;// 32位动静的特定附加信息
lParam: LPARAM ;// 32位动静的特定附加信息
time: DWORD;//动静创建时的时间
pt: TPoint; //动静创建时的鼠标位置
end ;
动静中有什么?
是否感受一个动静记录中的信息像希腊语一样?如果是这样,那么看一看下面的解释:hwnd 32位的窗口句柄。窗口可以是任何类型的屏幕东西,因为Win32能够维护大大都可
视东西的句柄(窗口、对话框、按钮、编纂框等)。message 用于区别其他动静的常量值,这些常量可以是Windows单元中预界说的常量,也
可以是自界说的常量。
wParam 凡是是一个与动静有关的常量值,也可能是窗口或控件的句柄。
lParam 凡是是一个指向内存中数据的指针。由于WParam、lParam和Pointer都是32位的,因此,它们之间可以彼此转换。
[csharp]
public class WindowsMessage
{
public const int WM_NULL = 0x0000; //
public const int WM_CREATE = 0x0001; //应用措施创建一个窗口
public const int WM_DESTROY = 0x0002; //一个窗口被销毁
public const int WM_MOVE = 0x0003; //移动一个窗口
public const int WM_SIZE = 0x0005; //转变一个窗口的巨细
public const int WM_ACTIVATE = 0x0006; //一个窗口被激活或掉去激活状态;
public const int WM_SETFOCUS = 0x0007; //获得焦点后
public const int WM_KILLFOCUS = 0x0008; //掉去焦点
public const int WM_ENABLE = 0x000A; //转变enable状态
public const int WM_SETREDRAW = 0x000B; //设置窗口是否能重画
public const int WM_SETTEXT = 0x000C; //应用措施发送此动静来设置一个窗口的文本
public const int WM_GETTEXT = 0x000D; //应用措施发送此动静来复制对应窗口的文本到缓冲区
public const int WM_GETTEXTLENGTH = 0x000E; //得到与一个窗口有关的文本的长度(不包罗空字符)