Windows程序的执行顺序取决于事件发生的顺序,程序的
程序的执行顺序取决于事件发生的顺序, 程序的执行顺序取决于事件发生的顺序 执行顺序是由顺序产生的消息驱动的,但是消息 消息驱动的 消息的产生往 执行顺序是由顺序产生的消息驱动的,但是消息的产生往 往并不要求有次序之分。 往并不要求有次序之分。 事件驱动编程方法对于编写交互式程序很有用处, 事件驱动编程方法对于编写交互式程序很有用处,它避免 编程方法对于编写交互式程序很有用处 了死板的操作模式
12
(3) 句柄
句柄是一个 字节长的数值 句柄是一个4字节长的数值,用于标识应 是一个 字节长的数值, 对象和 用程序中不同的对象 用程序中不同的对象和同类对象中不同的 实例
应用程序通过 使用指针容易破坏 句柄访问相应 句柄访问相应 原对象的结构 的对象信息 常用句柄类型及其说明
窗口 按钮 图标 滚动条 输出设备 控制 文件
HWND HBITMAP HICON HMENU HFILE HINSTANCE
窗口句柄 位图句柄 图标句柄 菜单句柄 文件句柄
当前实例句柄
HDC HCURSOR HFONT HPEN HBRUSH
设备环境句柄 光标句柄 字体句柄 画笔句柄 画刷句柄
13
(4) 消息
Windows应用程序利用Windows消息 应用程序利用 应用程序利用 消息 (Message)与应用程序及系统进行信息交换。 与应用程序及系统进行信息交换。 与应用程序及系统进行信息交换
附加信息与具体 附加信息与具体 消息号的值有关, 消息号的值有关, 在Win中消息用 中消息用 结构体MSG表示 结构体 表示
消息号: 消息号:由事先定义好的消息名标识 消 息 字参数(wParam) :用于提供消息的附加 用于提供消息的附加 字参数 信息 长字参数(lParam) :用于提供消息的附 用于提供消息的附 长字参数 加信息
typedef struct tagMSG 窗口句柄, 窗口句柄,为null,则可检索所有驻留在消息队列中的消息 , {HWND hwnd; 消息值, UINT message;消息值,由Windows.h头文件中的宏定义来标识 头文件中的宏定义来标识 包含有关消息的附加信息,不同消息其值有所不同 WPARAM wParam; 包含有关消息的附加信息 不同消息其值有所不同 LPARAM lParam; typedef struct tagPOINT DWORD time; 指定消息送至队列的时间 x; {LONG x; 指定消息发送时屏幕光标的位置, POINT pt;指定消息发送时屏幕光标的位置, 其数据类型POINT也是一个结构体 LONG y; 14 POINT; } POINT; }MSG;
补充WPARAM和LPARAM
Win 3.x中,WPARAM是16位的,而LPARAM是32位的, 两者有明显的区别。因为地址通常是32位的,所以 LPARAM 被用来传递地址,这个习惯在Win32 API中 仍然能够看到。在Win32 API中,WPARAM和LPARAM 都是32位,所以没有什么本质的区 别。Windows的 消息必须参考帮助文件才能知道具体的含义。如果 是自定义的消息,愿意怎么使这两个参数都行。但 是习惯上,我们愿意使用LPARAM传 递地址,而 WPARAM传递其他参数。
15
(4) 消息
VC中存在几种系统定义的消息分类,不同的前缀符号经常用于 中存在几种系统定义的消息分类, 中存在几种系统定义的消息分类 消息宏识别消息附属的分类,
系统定义的消息宏前缀如下: 消息宏识别消息附属的分类,系统定义的消息宏前缀如下: BM CB DM EM LB SBM WM 表示按钮控制消息 表示组合框控制消息 表示默认下压式按钮控制消息 表示编辑控制消息 表示
列表框控制消息 表示滚动条控制消息 表示窗口消息 窗口管理消息 初始化消息 输入消息 系统消息 剪贴板消息 控制处理消息 控制通知消息 滚动条通知消息 非用户区消息 MDI消息 消息 DDE消息 消息 16 应用程序自定义的消息
Windows 编 程
常用消 息
二、Windows应用程序常用消息 应用程序常用消息
1. WM_LBUTTONDOWN:产生单击鼠标左键的
消息 : 低字节包含当前光标的 坐标值 低字节包含当前光标的X坐标值 包含当前光标的 坐标 lParam 高字节包含当前光标的 坐标 高字节包含当前光标的Y坐标值 包