消息,就是指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都是3 2位的,因此,它们之间可以相互转换。
WM_NULL = $0000;
WM_CREATE = $0001; 应用程序创建一个窗口
WM_DESTROY = $0002; 一个窗口被销毁
WM_MOVE = $0003; 移动一个窗口
WM_SIZE = $0005; 改变一个窗口的大小
WM_ACTIVATE = $0006; 一个窗口被激活或失去激活状态;