第四讲Windows程序运行原理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

系统定义的消息宏前缀:





BM表示按钮控制消息。 CB表示组合框控制消息 DM表示默认下压式按钮控制消息 EM表示编辑控制消息 LB表示列表框控制消息 SBM表示滚动条控制消息 WM表示窗口消息
Windows应用程序常用消息





鼠标响应消息 键盘响应消息 WM_CHAR WM_CREATE WM_CLOSE WM_DESTROY WM_QUIT WM_PAINT WM_COMMAND
数据类型
WORD DWORD HANDLE 16-bit unsigned integer 32-bit unsigned integer Handle to an object
WPARAM
COLORREF LPCSTR LPSTR LRESULT WNDPROC
Message parameter (unsigned int)

窗口管理函数(USER32.DLL) 图形设备(GDI)函数(GDI32.DLL) 系统服务函数(KERNEL32.DLL)
窗口


窗口是Windows应用程序的基本操作单元,是应 用程序与用户之间交互的接口环境,也是系统管 理应用程序的基本单位。 作为对象,用户会在屏幕上看到这些窗口,可以 通过键盘和鼠标直接和它们进行交互操作。编写 Windows应用程序首先要创建一个或多个窗口,程 序的运行过程即是窗口内部、窗口之间以及窗口 与系统之间的数据交换和数据处理过程。
键盘响应消息

键盘响应消息
WM_KEYDOWN:按下非系统键 WM_KEYUP: 放开非系统键 wParam:按下键的虚拟键码 1Param:记录按键的重复次数,扫描码、转义代码、先前键的状态等


系统键是指实现系统操作的组合键,例如Alt键与某个功能键 的组合以实现系统菜单的操作等。 虚拟键码用以标识按下或释放的键,例如功能键F1的虚拟键 码在Windows.h文件中定义为VK-Fl.


应用程序,操作系统和硬件之间的相互关系
应用程序 消息队列
3
操作系统
4
1ቤተ መጻሕፍቲ ባይዱ
2
输入输出设备
Windows API
操作系统所能够完成的每一个特殊功能通常都有一个函 数与其对应,也就是说,操作系统把它所能够完成的功能以 函数的形式提供给应用程序使用,应用程序对这些函数的调 用就叫做系统调用,这些函数的集合就是Windows操作系统提 供给应用程序编程的接口(Application Programming Interface),简称Windows API。
消息



消息是描述事件发生的信息。消息不仅仅可以由键盘、 鼠标产生,它也可以由应用程序本身产生,也可由运行 的其它应用程序产生,还可由Windows或用户产生。每 当事件发生时,Windows就会将相应的消息发送到相关 的应用程序中去。 消息是独立于编程语言的,除Visual C++外,还可以使 用不同的语言如 VB 、 Delphi 、 Power Builder 等来编写 Windows程序,消息可以在这些程序之间方便的传送。 Windows应用程序利用 Windows消息(Message)与其他 的Windows应用程序及Windows系统进行信息交换。
DWORD POINT
lParam;
time; pt;
} MSG, *PMSG;
hwnd Handle to the window whose window procedure receives the message. message Specifies the message identifier. Applications can only use the low word; the high word is reserved by the system. wParam Specifies additional information about the message. The exact meaning depends on the value of the message member. lParam Specifies additional information about the message. The exact meaning depends on the value of the message member. time Specifies the time at which the message was posted. pt Specifies the cursor position, in screen coordinates, when the message was posted.
Red, green, blue (RGB) color value (32 bits) Pointer to a constant null-terminated string of 8-bit Windows (ANSI) characters Pointer to a constant null-terminated string of 16-bit Unicode characters Signed result of message processing(Long)窗口过程或回调 函数的32位返回值 指向窗口过程的32位指针(long (_stdcall*)(void*, unsigned int, unsigned int,long).)
输入界面3
停 止
Windows事件驱动原理
Windows 应用程序
键盘消息 鼠标消息 其他消息
消 息 队 列
处理消息
取消息
事件驱动的概念

Windows编程使用事件驱动的程序设计思想。程序的控 制流程是由实际运行时各种事件的实际发生来触发,可 能是随机的、不确定的,并没有预定的顺序。 事件驱动程序设计是一种“被动式”的程序设计方法, 程序开始运行时,处于等待消息的状态,然后取得消息 并对其作出响应,处理完毕后又回到原来的等待状态。 事件可以由系统产生、硬件设备产生或用户产生。 事件驱动编程方法对于编写交互式程序很有用处,用这 一方法编写的程序使程序避免了死板的操作模式,从而 使用户能够按照自己的意愿采用灵活多变的操作形式。
鼠标响应消息

WM_LBUTTONDOWN WM-LBUTTONUP WM-RBUTTONDOWN WM-RBUTTONUP WM-LBUTTONDBLCLK WM-RBUTTONDBLCLK
附加消息参数wParam包含一个整数值,该指标识鼠 标键按下的状态。长参数1Pararm的低字节包含当前 光标的X坐标,高字节包含当前光标的Y坐标
消息投递模式
消息接收、响应方式
输 入 转换为消息,并放入系统消息队列中 Windows删除系统消息队列中的消 息,并进行检查,以确定目标窗口 Windows将消息从系统消息队列发送 到目标窗口的消息队列
窗口从窗口消息队列中删除一条消息
窗口将这条消息发送给Windows, 请求Windows将该消息传送给 当前实例的消息处理函数 Windows调用窗口的当前实例的 消息处理函数
Windows编程基础
基本内容

Windows程序运行机制
事件驱动的概念 Windows API 窗口的概念 消息 句柄


应用程序举例
过程驱动程序模型
开 始 输入数据1
输入数据2 输入数据3 处 理 结 束
事件驱动程序模型
开 始 输入界面1
取事件并处理
发送事件
输入界面2
退 出?
窗口的创建
创建一个完整的窗口需要经过下面四个操 作步骤: 设计一个窗口类; 注册窗口类; 创建窗口; 显示及更新窗口。



Windows程序的运行原理
typedef struct tagMSG { HWND UINT WPARAM hwnd; message; wParam;
LPARAM
句柄



句柄(handle)是整个Windows编程的基础。一个句柄是 指Windows使用的一个唯一的整数值,是一个4字节长 (32位)的数值,用于标识应用程序中不同的对象和同类 对象中不同的实例 。 句柄对应于Windows为应用程序分配的一个具体的资源。 通过句柄能够访问相应的对象信息。 句柄常作为Windows消息和API函数的参数,在应用API方 法编写Windows应用程序程序时要经常同句柄打交道,而 应用MFC方法编写Windows应用程序时,派生类的对象已经 包含了具体句柄的信息,所以大都不再需要访问句柄。
相关文档
最新文档