Windows是一个消息驱动模式的系统,SendMessage 是应用程序和应用程序之间进行消息传递的主要手段之一。由于 SendMessage 函数的参数选项过于繁多,因此很有必要作一个汇总,分门别类地来向大家介绍。
Windows是一个消息驱动模式的系统,SendMessage 是应用程序和应用程序之间进行消息传递的主要手段之一。由于 SendMessage 函数的参数选项过于繁多,因此很有必要作一个汇总,分门别类地来向大家介绍。
函数声明
LRESULT SendMessage( __in HWND hWnd,
__in UINT Msg,
__in WPARAM wParam,
__in LPARAM lParam );
hWnd 参数:窗口句柄。窗口可以是任何类型的屏幕对象。
Msg 参数:用于区别其他消息的常量值。
wParam 参数:通常是一个与消息有关的常量值,也可能是窗口或控件的句柄。
lParam 参数:通常是一个指向内存中数据的指针。
下面,向大家分类介绍 Msg 参数 常量值。
窗口消息
WM_MOVE 移动一个窗口
WM_SIZE 改变一个窗口的大小
按钮
BM_CLICK 按钮被点击消息
BM_GETCHECK 可用于复选框/单选框。查看是否被选择了
BM_GETSTATE 发送此消息,可返回 button 的状态,如是否被选择;是否可用(不可用就变灰了)
BM_SETCHECK 如果已经选择了,发送此消息后,变为未选择,就是那个钩没被勾上
BM_SETSTATE 设置 button 被点击状态。
组合框
CB_ADDSTRING 添加字符串到组合框。
CB_DELETESTRING 删除组合框中的条目,即 item 。
CB_GETCOUNT 得到组合框条目 item 的数目。
CB_GETCURSEL 返回组合框中被选条目在组合框中的位置,第一条为 0。
如果没有条目或出错,则返回 -1 。
CB_GETDROPPEDSTATE 发送此消息,可判断组合框的下拉列表是否下拉。
如果是,返回非零值,不是,则返回 0 。
CB_GETLBTEXT 得到组合框的条目文本。返回值是这个文本的长度。
CB_GETLBTEXTLEN 返回值是条目的文本的长度。
CB_INSERTSTRING 插入字符串条目到组合框中。
CB_RESETCONTENT 清空组合框所有条目。
CB_SETCURSEL 设置组合框被选条目。
CB_SHOWDROPDOWN 让组合框的下拉列表下拉,即显出所有条目。
编辑框
EM_CANUNDO 决定上一次操作是否可以 undo(撤消操作)。如果可以,则可发送 EM_UNDO 消息
EM_GETFIRSTVISIBLELINE 在多行控件中,找到最上层的可见的行号。此行号是相对于所有行的。
EM_GETPASSWORDCHAR 返回密码框的字符集,即查看密码。
EM_GETSEL 返回在可编辑控件中,被选择(高亮选择)的字符集的起点和终点的位置,用 SendMessage 的 wParam 参数返回起点位置,lParam 返回终点位置
EM_REPLACESEL 用不同的字符串替换可编辑控件中的字符串。如果可编辑控件中没有字符串,则此消息变为添加字符串。如果 wParam 为 TRUE,则本次操作允许撤消,FALSE 禁止撤消。
EM_SETPASSWORDCHAR 在可编辑控件中设置密码字符集,即用 * 代替
EM_UNDO 发送操作撤消消息。
EM_GETLINE 获取编辑控件中输入的文字。
EM_LINEFROMCHAR 检索指定字符索引(索引编号从编辑框的第一个字符开始)所在的行索引
EM_LINEINDEX 在多行编辑控件中,检索某行首字符在编辑控件中的索引
EM_ERRSPACE 编辑控件不能分配足够的内存来满足特定的要求。
编辑控件的父窗口通过 WM_COMMAND 消息收到此消息。
EM_LIMITTEXT 设置编辑框用户可输入的最大字符数。wParam 为字符数,lParam 不使用(0L)
IP 地址控件
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 地址的有效范围
MCI(Media Control Interface)
MM_MCINOTIFY 该 MM_MCINOTIFY 消息通知应用程序,一个 MCI 设备已完成操作。只有设置了 MCI_NOTIFY 标志时,MCI 设备才发送此消息。
菜单
WM_COMMAND 当用户选择菜单中的项目后,将向窗体发送此消息. 窗体收到此消息后,再决定下一个行为。
WM_INITMENU 当菜单准备显示前,向窗体发送此消息, 窗体将初始化菜单项。
WM_SYSCOMMAND 向窗体发送用户点击系统菜单消息. 窗体将响应这个消息 ,决定下个行为。
列表框
LB_ADDSTRING 在条目中添加字符串
LB_DELETESTRING 删除一个条目. 条目序号是从 0 开始的.
LB_GETCOUNT 得到条目总数.
LB_GETCURSEL 得到单选的列表框选项条目的序号
LB_GETSEL 判断列表框的条目是否被选上, 如果选上了,则返回 >0 的值。否则返回 0 ,表示用户没选择条目
LB_GETSELCOUNT 获得可多选的列表框中被选择的条目数
LB_GETSELITEMS 返回可多选的列表框中被选条目的序号,可返回数组
LB_GETTEXT 得到列表框中的一个条目的文本
LB_GETTEXTLEN 得到列表框中的一个条目的文本的长度
LB_INSERTSTRING 在列表框中插入一个条目。如果成功,将返回插入后此条目的序号。
LB_SETCURSEL 对单选的列表框,设定用户选择条目的具体值
LB_SETSEL 对多选的列表框,设定用户选择条目的具体值
LB_RESETCONTENT 从列表框删除所有项目,wParam 和 lParam 参数均不使用(为 0)
LB_SETHORIZONTALEXTENT 设定列表框水平滚动范围。如果列表框宽度小于此值,则水平滚动条显现;如果列表框宽度大于等于此值,则水平滚动条是隐藏的。wParam 为所设的水平滚动范围(像素),lParam 不使用,为 0。没有返回值
注意:LB_SETHORIZONTALEXTENT 消息要起作用,列表框必须定义 WS_HSCROLL 样式
LB_SETTABSTOPS 在列表框中设置制表位位置(即每列间距)为了应对 LB_SETTABSTOPS 消息,列表框必须已经拥有 LBS_USETABSTOPS 样式。 wParam 指定制表位数量,lParam 为制表位整数数组(各列之间间隔,不必相等)如果 wParam 是 0,lParam 为 NULL,默认制表位是 2 个对话框模板单位。如果 wParam 是 1,制表位为 lParam 指定的距离。如果超过 1,制表位将被设置为 lParam 中的每个值(wParam 指定数量)
鼠标
WM_LBUTTONDBLCLK 当鼠标在一个窗体范围内时,告诉此窗体鼠标左键已双击,返回值 0
WM_LBUTTONDOWN 当鼠标在一个窗体范围内时,告诉此窗体鼠标左键已点击,返回值 0
WM_LBUTTONUP 当鼠标在一个窗体范围内时,告诉此窗体鼠标左键已释放,返回值 0
WM_MBUTTONDBLCLK 当鼠标在一个窗体范围内时,告诉此窗体鼠标中键已双击,返回值 0
WM_MBUTTONDOWN 当鼠标在一个窗体范围内时,告诉此窗体鼠标中键已点击,返回值 0
WM_MBUTTONUP 当鼠标在一个窗体范围内时,告诉此窗体鼠标中键已释放,返回值 0
原文:http://www.cnblogs.com/dandansang/p/6666294.html