首先 我们了解一下Windows的消息机制。Windows是一个消息驱动式系
统,Windows消息提供应用程序与应用程序之间,应用程序与Windows系统之间进
行通信的手段。
举个例子,打开记事本程序,该程序有一个 “文件“菜单。 那么,在运行该程序
的时候,如果用户单击“文件菜单“里的“新建“命令, 这个动作将被Windows所捕
捉,Windows经过分析得知这个动作应该由我们打开的记事本程序所来处理,然后
Windows就发送个消息 譬如我们编程的时候有时用到的 WM_COMMAND的消息给记
事本,然后记事本就把这个消息处理掉。 这个过程就是消息处理。
接下来,我们把SendMessage的完整形式讲一下
SendMessage
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal
hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As
Long
别名
SendMessageA
说明
调用一个窗口的窗口函数,将一条消息发给那个窗口。除非消息处理完毕,否
则该函数不会返回
SendMessage所包含4个参数
hwnd 32位的窗口句柄窗口可以是任何类型的屏幕对象,因为Win32能够维
护大多数可视对象的句柄
wMsg 用于区别其他消息的常量值,这些常量可以是Windows单元中预定
义的常量,也可以是自定义的常量
wParam 通常是一个与消息有关的常量值,也可能是窗口或控件的句柄
lParam 通常是一个指向内存中数据的指针。由于WParm、lParam和Pointer
都是32位的,因此,它们之间可以相互转换
wMsg函数
WM_CREATE 创建一个窗口
WM_DESTROY 当一个窗口被破坏时发送
WM_MOVE 移动一个窗口
WM_SIZE 改变一个窗口的大小
WM_ACTIVATE 一个窗口被激活或失去激活状态
WM_SETFOCUS 一个窗口获得焦点
WM_KILLFOCUS 一个窗口失去焦点
WM_ENABLE 一个窗口改变成Enable状态
WM_SETREDRAW 设置窗口是否能重画
WM_SETTEXT 应用程序发送此消息来设置一个窗口
的文本
WM_GETTEXT 应用程序发送此消息来复制对应窗口
的文本到缓冲区
WM_GETTEXTLENGTH 得到与一个窗口有关的文本的长度(
不包含空字符)
WM_PAINT 要求一个窗口重画自己
WM_CLOSE 当一个窗口或应用程序要关闭时发送
一个信号
WM_QUERYENDSESSION 当用户选择结束对话框或程序自己调
用ExitWindows函数
WM_QUIT 用来结束程序运行
WM_QUERYOPEN 当用户窗口恢复以前的大小位置时,
把此消息发送给某个图标
WM_ERASEBKGND 当窗口背景必须被擦除时(例在窗口
改变大小时)
WM_SYSCOLORCHANGE 当系统颜色改变时,发送此消息给所
有顶级窗口
WM_ENDSESSION 当系统进程发
出WM_QUERYENDSESSION消息后,此消息发送给应用程序,通知它对话是否结束
WM_SHOWWINDOW 当隐藏或显示窗口是发送此消息给这
个窗口
WM_ACTIVATEAPP 发此消息给应用程序哪个窗口是激活
的,哪个是非激活的
WM_FONTCHANGE 当系统的字体资源库变化时发送此消
息给所有顶级窗口
WM_TIMECHANGE 当系统的时间变化时发送此消息给所
有顶级窗口
WM_CANCELMODE 发送此消息来取消某种正在进行的摸
态(操作)
WM_SETCURSOR 如果鼠标引起光标在某个窗口中移动
且鼠标输入没有被捕获时,就发消息给某个窗口
WM_MOUSEACTIVATE 当光标在某个非激活的窗口中而用户
正按着鼠标的某个键发送此消息给当前窗口
WM_CHILDACTIVATE 发送此消息给MDI子窗口当用户点击
此窗口的标题栏,或当窗口被激活,移动,改变大小
WM_QUEUESYNC 此消息由基于计算机的训练程序发送
,通过WH_JOURNALPALYBACK的hook程序分离出用户输入消息
WM_GETMINMAXINFO 此消息发送给窗口当它将要改变大小
或位置
WM_PAINTICON 发送给最小化窗口当它图标将要被重
画
WM_ICONERASEBKGND 此消息发送给某个最小化窗口,仅当
它在画图标前它的背景必须被重画
WM_NEXTDLGCTL 发送此消息给一个对话框程序去更改
焦点位置
WM_SPOOLERSTATUS 每当打印管理列队增加或减少一条作
业时发出此消息
WM_DRAWITEM
当button,combobox,listbox,menu的可视外观改变时发送
WM_MEASUREITEM 当button, combo box, list box, list
view control, or menu item 被创建时
WM_VKEYTOITEM 此消息有一
个LBS_WANTKEYBOARDINPUT风格的发出给它的所有者来响应WM_KEYDOWN消息
WM_CHARTOITEM 此消息由一
个LBS_WANTKEYBOARDINPUT风格的列表框发送给他的所有者来响应WM_CHAR消
息
WM_SETFONT 当绘制文本时程序发送此消息得到控
件要用的颜色
WM_GETFONT 应用程序发送此消息得到当前控件绘
制文本的字体
WM_SETHOTKEY 应用程序发送此消息让一个窗口与
一个热键相关连
WM_GETHOTKEY 应用程序发送此消息来判断热键与某
个窗口是否有关联
WM_QUERYDRAGICON 此消息发送给最小化窗口,当此窗口
将要被拖放而它的类中没有定义图标,应用程序能返回一个图标或光标的句柄,当
用户拖放图标时系统显示这个图标或光标
WM_COMPAREITEM 发送此消息来判
定combobox或listbox新增加的项的相对位置
WM_COMPACTING 显示内存已经很少了
WM_WINDOWPOSCHANGING 发送此消息给那个窗口的大小和位
置将要被改变时,来调用setwindowpos函数或其它窗口管理函数
WM_WINDOWPOSCHANGED 发送此消息给那个窗口的大小和位
置已经被改变时,来调用setwindowpos函数或其它窗口管理函数
WM_POWER 当系统将要进入暂停状态时发送
SendMessage函数完全使用手册【转】
最新推荐文章于 2024-03-13 14:32:04 发布