首先 我们了解一下Windows的消息机制。Windows是一个消息驱动式系统,Windows消息提供应用程序与应用程序之间,应用程序与Windows系统之间进行通信的手段。
举个例子,打开记事本程序,该程序有一个 “文件“菜单。 那么,在运行该程序的时候,如果用户单击“文件菜单“里的“新建“命令, 这个动作将被Windows所捕捉,Windows经过分析得知这个动作应该由我们打开的记事本程序所来处理,然后Windows就发送个消息 譬如我们编程的时候有时用到的 WM_COMMAND的消息给记事本,然后记事本就把这个消息处理掉。 这个过程就是消息处理。
函数原型 :LRESULT SendMessage(HWND hWnd,UINT wMsg,WPARAM wParam,LPARAM IParam);
参数:
hWnd:其窗口程序将接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口。
wMsg 用于区别其他消息的常量值,这些常量可以是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(HWND, CB_SHOWDROPDOWN, -1, -1) ‘显示Combo1.hwnd下拉列表 SendMessage (Combo1.hWnd, CB_SHOWDROPDOWN, 0, 0 ) ‘不下拉
|
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/209697.html原文链接:https://javaforall.net
