知它有关电源管理事件 WM_DEVICECHANGE 当设备的硬件配置改变时发送此消息给应用程序或设备驱动程序 WM_MDIDESTROY 应用程序发送此消息给多文档的客户窗口来关闭一个MDI 子窗口 WM_MDIACTIVATE 应用程序发送此消息给多文档的客户窗口通知客户窗口激活另一个MDI子窗口,当客户窗口收到此消息后,它发出WM_MDIACTIVE消息给MDI子窗口(未激活)激活它 WM_MDIRESTORE 程序 发送此消息给MDI客户窗口让子窗口从最大最小化恢复到原来大小 WM_MDINEXT 程序 发送此消息给MDI客户窗口激活下一个或前一个窗口 WM_MDIMAXIMIZE 程序发送此消息给MDI客户窗口来最大化一个MDI子窗口 WM_MDITILE 程序 发送此消息给MDI客户窗口以平铺方式重新排列所有MDI子窗口 WM_MDICASCADE 程序 发送此消息给MDI客户窗口以层叠方式重新排列所有MDI子窗口 WM_MDIICONARRANGE 程序 发送此消息给MDI客户窗口重新排列所有最小化的MDI子窗口 WM_MDIGETACTIVE 程序 发送此消息给MDI客户窗口来找到激活的子窗口的句柄 WM_MDISETMENU 程序 发送此消息给MDI客户窗口用MDI菜单代替子窗口的菜单 WM_CUT 程序发送此消息给一个编辑框或combobox来删除当前选择的文本 WM_COPY 程序发送此消息给一个编辑框或combobox来复制当前选择的文本到剪贴板 WM_PASTE 程序发送此消息给editcontrol或combobox从剪贴板中得到数据 WM_CLEAR 程序发送此消息给editcontrol或combobox清除当前选择的内容 WM_UNDO 程序发送此消息给editcontrol或combobox撤消最后一次操作 WM_DESTROYCLIPBOARD 当调用ENPTYCLIPBOARD函数时 发送此消息给剪贴板的所有者 WM_DRAWCLIPBOARD 当剪贴板的内容变化时发送此消息给剪贴板观察链的第一个窗口 它允许用剪贴板观察窗口来显示剪贴板的新内容 WM_PAINTCLIPBOARD 当剪贴板包含CF_OWNERDIPLAY格式的数据并且剪贴板观察窗口的客户区需要重画 WM_SIZECLIPBOARD 当剪贴板包含CF_OWNERDIPLAY格式的数据并且剪贴板观察窗口的客户区域的大小已经改变是此消息通过剪贴板观察窗口发送给剪贴板的所有者 WM_ASKCBformATNAME 通过剪贴板观察窗口发送此消息给剪贴板的所有者来请求一个CF_OWNERDISPLAY格式的剪贴板的名字 WM_CHANGECBCHAIN 当一个窗口从剪贴板观察链中移去时发送此消息给剪贴板观察链的第一个窗口 WM_HSCROLLCLIPBOARD 此消息通过一个剪贴板观察窗口发送给剪贴板的所有者 它发生在当剪贴板包含CFOWNERDISPALY格式的数据并且有个事件在剪贴板观察窗的水平滚动条上 所有者应滚动剪贴板图象并更新滚动条的值 WM_QUERYNEWPALETTE 此消息发送给将要收到焦点的窗口,此消息能使窗口在收到焦点时同时有机会实现他的逻辑调色板 WM_PALETTEISCHANGING 当一个应用程序正要实现它的逻辑调色板时发此消息通知所有的应用程序 WM_PALETTECHANGED 此消息在一个拥有焦点的窗口实现它的逻辑调色板后发送此消息给所有顶级并重叠的窗口,以此来改变系统调色板 WM_HOTKEY 当用户按下由REGISTERHOTKEY函数注册的热键时提交此消息 WM_PRINT 应用程序发送此消息仅当WINDOWS或其它应用程序发出一个请求要求绘制一个应用程序的一部分
Buttons
BM_CLICK button被点击 消息
BM_GETCHECK 用于check boxes 或radio boxes 。查看 是否 checked 了。
BM_GETSTATE 发送此消息,可返回 button 的状态,如 是否被 checked;是否 可用(不可用就 变灰了)
BM_SETCHECK 如果 已经 checked 了,发送此消息后,变为 unchecked,就是 那个钩钩 没被 选上。ok?
BM_SETSTATE 设置 button被 点击 状态。
====================
Combo Boxes
CB_ADDSTRING 添加 字符串到 Combo Boxes 。
CB_DELETESTRING 删除 Combo Boxes 中的 条目,既 item
CB_GETCOUNT 得到 Combo Boxes 条目 item 的 数目
CB_GETCURSEL 返回 Combo Boxes 中被选 条目 在 Combo Boxes 中 的位置,第一条为0 。
如果 没有 条目或出错,则返回 -1
CB_GETDROPPEDSTATE 发送此消息,可判断 Combo Boxes 的list box 是否被 放下,如果 是,返回 非零值,不是,则 返回 0
CB_GETLBTEXT 得到 combo box 的 条目 的text。 返回值 是 这个text 的长度。
CB_GETLBTEXTLEN 返回值 是 条目的 text 的长度。
CB_INSERTSTRING 插入 字符串 条目到 combo box 中
CB_RESETCONTENT 清空 combo box 所有条目
CB_SETCURSEL 设置 combo box 被选 条目。
CB_SHOWDROPDOWN 让 combo box 的listbox 下拉。 既 显出 所有 条目
===================
Edit Controls
EM_CANUNDO 决定 上一次操作 是否可以 undo (撤消操作)。如果可以,则可发送 EM_undo
EM_GETFIRSTVISIBLELINE 在 multi-line 控件中,找到 最上层的 可见的 行号。次行号是相对于 所有行的。
EM_GETPASSWORDCHAR 返回 密码框的 字符集。既 是查看密码。
EM_GETSEL 返回在 可编辑 控件中 ,被选择(HIGHLIGHT高量选择)的字符集 的 起点 和终点的 位置。
用 sendmessage 的wParam 参数 返回 起点位置,lParam 返回 终点位置
EM_REPLACESEL 用不同的字符串 替换 可编辑 控件 中的 字符串,如果 可编辑 控件中 没有 字符串,则 此消息变为 添加 字符串
EM_SETPASSWORDCHAR 在可编辑 控件中 设置 密码字符集 ,既 用* 代替
EM_UNDO 发送 操作 撤消 消息。
======================
IP Address Control
===================
IPM_CLEARADDRESS 清除 IP 地址控件(IP Address control)的内容
IPM_GETADDRESS 从IP 地址控件 获得 存储在 它中的 IP 地址 信息/
IPM_ISBLANK 决定 IP 地址控件 是否可以为 空值。既 127.0.0.1 之类的地址 为 空。
IPM_SETADDRESS 在 IP 地址控件中设置 IP 地址。
IPM_SETFOCUS 在 IP 地址控件中,当需要输入 IP 地址时, 使之获得 键盘输入 焦点
IPM_SETRANGE 设置 输入IP 地址的有效范围
=====================
Media Control Interface (MCI)
=============================
MM_MCINOTIFY 告诉 窗体 MCI 命令 完成的状态. 这个 状态包括 success, failure, 或 其它事件
Menus
=============================
WM_COMMAND 当 用户 选择 菜单中的 项目后,将向 窗体 发送此消息. 窗体 受到 此消息后,再 决定 下一个 行为
WM_INITMENU 当 菜单 准备 显示 前,向 窗体发送 此消息, 窗体 将 初始化 菜单 项.
WM_SYSCOMMAND 向 窗体 发送 用户点击 系统菜单 消息. 窗体将 响应 这个消息 ,决定 下个 行为.
================
Windows
=====================
WM_CLOSE 发送 让窗体关闭的消息,有些窗体会 在此时 弹出个 关闭对话框。
WM_GETTEXT 返回 窗体 标题栏 (caption 属性)。 需要先 用WM_GETTEXTLENGTH 获得 字符串长度
WM_GETTEXTLENGTH 见上!
WM_HELP 发送此 消息后,将 显示 指定的 HELP 文件
WM_SETTEXT 设置 窗体 标题栏 。
==============================
List Boxes
===============
LB_ADDSTRING 在条目中添加 字符串
LB_DELETESTRING 删除一个 条目. 条目 序号是从 0 开始的.
LB_GETCOUNT 得到 条目总数.
LB_GETCURSEL 得到 单选 的list box 的 选项条目的 序号
LB_GETSEL 判断 list 的 条目 是否被选上, 如果 选上了,则返回 >0 的值.否则 返回 0 ,表示 用户没选择条目
LB_GETSELCOUNT 获得 可多选 的list , 被用户选择的条目的个数.
LB_GETSELITEMS 返回 可多选的list 的 被选条目的 序号. 可返回 数组.
LB_GETTEXT 得到 list中的 一个 条目的 text 值
LB_GETTEXTLEN 得到 list中的 一个 条目的 text 值的长度
LB_INSERTSTRING 在list 中,插入 一个条目。如果成功,将返回 插入后,此条目的序号。
LB_RESETCONTENT 清空 所有的 list 中的 条目。
LB_SETCURSEL 对单选 的list box, 设定 用户 选择条目的 具体值
LB_SETSEL 对多选 的list box, 设定 用户 选择条目的 具体值
=======================================================
Mouse
==================
WM_LBUTTONDBLCLK 当鼠标在一个窗体范围内时,告诉此窗体 鼠标左键 已双击 。返回值 0
WM_LBUTTONDOWN 当鼠标在一个窗体范围内时,告诉此窗体 鼠标左键 已点击,返回值 0
WM_LBUTTONUP 当鼠标在一个窗体范围内时,告诉此窗体 鼠标左键 已释放,返回值 0
WM_MBUTTONDBLCLK 当鼠标在一个窗体范围内时,告诉此窗体 鼠标中键 已双击 。返回值 0
WM_MBUTTONDOWN 当鼠标在一个窗体范围内时,告诉此窗体 鼠标中键 已点击,返回值 0
WM_MBUTTONUP 当鼠标在一个窗体范围内时,告诉此窗体 鼠标中键 已释放,返回值 0
SendMessage用例
SendMessage(hWnd,WM_SETFOCUS,0,0); SendMessage(hWnd,WM_ACTIVATE,1,0);
SendMessage(hWnd,WM_KEYDOWN,VK_TAB,0x000f0001); SendMessage(hWnd,WM_CHAR,VK_TAB,0x000f0001); SendMessage(hWnd,WM_KEYUP,VK_TAB,0xc00f0001); SendMessage(hWnd,WM_KEYDOWN,VK_TAB,0x000f0001); SendMessage(hWnd,WM_CHAR,VK_TAB,0x000f0001); SendMessage(hWnd,WM_KEYUP,VK_TAB,0xc00f0001); SendMessage(hWnd,WM_KEYDOWN,VK_TAB,0x000f0001); SendMessage(hWnd,WM_CHAR,VK_TAB,0x000f0001); SendMessage(hWnd,WM_KEYUP,VK_TAB,0xc00f0001); SendMessage(hWnd,WM_KEYDOWN,VK_RETURN,0x001c0001); SendMessage(hWnd,WM_CHAR,VK_RETURN,0x001c0001); SendMessage(HWND, WM_SYSCOMMAND, SC_MAXIMIZE, ByVal 0&) '最大化
SendMessage HWND, WM_SHOWWINDOW, SW_HIDE, vbNull '隐藏窗体 SendMessage HWND, WM_SHOWWINDOW, SW_NORMAL, vbNull '显示窗体
SendMessage(HWND, CB_SHOWDROPDOWN, -1, -1) '显示Combo1.hwnd下拉列表
SendMessage (Combo1.hWnd, CB_SHOWDROPDOWN, 0, 0 ) '不下拉
SendMessage(HWND, WM_SYSCOMMAND, SC_CLOSE, ByVal 0&) '关闭 SendMessage(HWND, WM_SYSCOMMAND, SC_MINIMIZE, ByVal 0&) '最小化 SendMessage(HWND, WM_PASTE, 0, 0) '粘贴 SendMessage(HWND, WM_COPY, 0, 0) '复制 SendMessage(HWND, WM_UNDO, 0, 0) '撤消 SendMessage(HWND, WM_SETTEXT, 0, ByVal new_caption) 'f发文本信息 SendMessage(HWND, WM_KEYDOWN, Asc("b"), 0&) '发送按键 只能用于 控件 不能用与整个窗体或进程 SendMessage(HWND, WM_LBUTTONDOWN, MK_LBUTTON, ByVal &H10001) '鼠标模拟 WindowFromPoint(Cursor.x, Cursor.y) '获得鼠标当前句柄 GetPixel(dc, Cursor.x, Cursor.y) '获取鼠标点颜色 SendMessage(HWND, WM_CUT, 0, 0) '剪切 但单击按钮会使其失去焦点 这里不做演示
获得光标位置和字符个数. Cpos = SendMessage(Text1.hwnd, 187, -1, 0) '光标所在行的首字符在文本中的位置 Lpos = SendMessage(Text1.hwnd, 201, Cpos, 0) '光标所在的行号 Line = SendMessage(Text1.hwnd, 193, Cpos, 0) '这行的字符数. SendMessage (Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 0 )'关闭显示器. SendMessage Handle, WM_SYSCOMMAND, SC_MONITORPOWER, -1 ')打开显示器 SendMessage(mText.hwnd, EM_GETRECT, 0, rc) '获得窗口区域的边界
SendMessage hWnd, WM_KEYDOWN, VK_CONTROL, ByVal 0& ) SendMessage hWnd, WM_KEYDOWN, VK_X, ByVal 0&) SendMessage hWnd, WM_KEYUP, VK_X, ByVal 0& ) SendMessage hWnd, WM_KEYUP, VK_CONTROL, ByVal 0&) |