SendMessage函数完全使用手册【转】


    首先 我们了解一下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                                                 当系统将要进入暂停状态时发送

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值