Win32 Windows编程 五

一 Win32消息机制

1 消息机制

过程驱动:程序是按照我们预先定义好的顺序执行,每执行一步,下一步都已经按照预定的顺序继续执行,直到程序结束

事件驱动: 程序的执行顺序是无序的。某个事件点所执行的代码,是由外界通知。由于我们无法决定用户执行顺序,所以代码的执行也是无序

Win32的消息机制 - 事件驱动

2 Win32消息程序

2.1 Win32 窗口注册

2.2 Win32窗口创建

2.3 Win32消息循环

2.3.1 GetMessage


BOOL GetMessage(
  LPMSG lpMsg,         // message information 存放获取到的消息数据
  HWND hWnd,           // handle to window 获取消息的窗口句柄
  UINT wMsgFilterMin,  // first message	消息过滤器的起始消息
  UINT wMsgFilterMax   // last message		消息过滤的终止消息
);
返回值: 成功获取消息返回TRUE, 但是当获取到 WM_QUIT消息时 返回FALSE
PostQuitMessage : 发送一条WM_QUIT 消息

MSG - 由系统填写关于消息的参数

hWnd - GetMessage会根据hWnd值,接收由hWnd指定的窗口的消息

wMsgFilterMin wMsgFilterMax - 消息过滤器 要求GetMessage接收指定范围的消息

2.3.2 DispatchMessage

LRESULT DispatchMessage(
  CONST MSG *lpmsg   // message information
);

根据消息数据内的窗口句柄,找到这个窗口的消息处理函数, 调用函数,进行消息处理,如果消息结构中的hWnd为NULL,将不做任何处理

2.3.3 TranslateMessage

BOOL TranslateMessage(
  CONST MSG *lpMsg   // message information
);
将键盘消息转换成字符消息

1、首先检查是否是键盘按键消息

2、如果发现是按键消息,将根据按键产生一个字符消息,在下一个GetMessage执行时会收到字符消息

3、如果未发现按键消息,不做任何处理

2.4 Win32基本消息

2.4.1 WM_DESTROY ::窗口销毁时的消息,可以做退出或善后处理

2.4.2 WM_CREATE :  窗口创建消息,是在窗口创建后,窗口处理函数收到的第一条消息,可以在这个消息内做数据初始化/创建子窗口等

2.4.3 WM_SIZE:当窗口大小发生变化时,会收到这个消息。可以在这个消息中调整窗口的布局

wParam - SIZE发生变化时的标识

LOWORD(lParam) 客户区的宽

HIWORD(lParam) 客户区的高

2.4.4  WM_SYSCOMMAND:系统命令消息,当点击系统菜单和按钮时会收到这个消息,可以再消息中,提示用户保存数据等。

wParam 系统命令类型

LOWORD(lParam) 鼠标x坐标

HIWORD(lParam) 鼠标y坐标

2.4.5  WM_ACTIVEAPP:应用程序激活

2.4.6 WM_PAINT 绘图消息

2.4.7 键盘消息

2.4.8 键盘消息

2.4.9 WM_TIMER 定时器消息

2.5 消息结构

MSG - 消息结构

typedef struct tagMSG {
  HWND   hwnd; 		//消息发生的窗口
  UINT   message; 	//消息ID
  WPARAM wParam; 	//消息参数
  LPARAM lParam; 	//消息参数
  DWORD  time; 		//消息发生的时间
  POINT  pt; 		//消息发生时鼠标的位置
} MSG, *PMSG; 

Win32 Windows编程 五

时间: 2024-10-05 05:31:22

Win32 Windows编程 五的相关文章

Win32 Windows编程 十

一 Windows绘图 1 图形绘制 1.1 图形绘制的方式 获取到绘图的句柄,设备描述符(DC),使用相应的绘图API,在设备上绘制图形 1.2 颜色 RGB,每种颜色8位,共24位颜色 32位颜色:颜色数量24为颜色,多出的8位表示灰度. 16位:颜色数量是2的16次方. Win32下,颜色的定义使用 COLORREF.RGB的宏定义颜色 COLORREF nColor = RGB( 0, 0, 0 );  黑色 COLORREF nColor = RGB( 255, 255, 255 );

Win32 Windows编程 九

资源的使用 1 资源文件 图标 光标 字符串 菜单  加速键 对话框资源位图等等 资源脚本文件 - 扩展名为RC文件 定义了资源和相关文件等信息 资源编译器 - RC.exe 2 图标资源 ICON 2.1 常用的几种大小: 16x16 ,32x32, 48x48 2.2 使用 HICON LoadIcon( HINSTANCE hInstance, // handle to application instance LPCTSTR lpIconName // name string or re

Win32 Windows编程 二

一.第一个窗口程序 1  入口函数 WinMain 2  窗口处理函数 LRESULT CALLBACK WndProc( HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam ) { return DefWindowProc( hWnd, nMsg, wParam, lParam ); } 当窗口处理消息事件时 调用该函数 LRESULT CALLBACK WndProc( HWND hWnd, UINT nMsg, WPARAM wParam,

Win32 Windows编程 六

WM_PAINT消息 1 WM_PAINT 由于窗口的互相覆盖等,产生需要绘制的区域, 那么会产生WM_PAINT消息.一般情况下,不直接发送WM_PAINT消息,通过API声明需要绘制区域来产生 WM_PAINT消息 例如可以使用 InvalidateRect 声明一个需要重新绘制的区域 BOOL InvalidateRect( HWND hWnd, // handle to window CONST RECT* lpRect, // rectangle coordinates BOOL bE

Win32 Windows编程 三

一.NMAKE 和 Makefile 1.1  NMAKE - 命令解释器, 根据Makefile文件中定义的脚本,完成项目的编译等操作 1.2 Makefile - 定义编译.连接等脚本语言 1.3 Makefile 文件的使用 1.3.1 基本语法规则 window.exe:window.obj //依赖行 cl.exe window.c /c   //命令行 link.exe window.obj user32.lib window.exe 的依赖项是window.obj,如果window

Win32 Windows编程 十二

一.对话框 1.对话框的分类 2.对话框的基本使用方式 3.对话框资源 4.有模式对话框的使用 5. 无模式对话框的使用 5.1 添加对话框资源 5.2 定义窗口处理函数 BOOL CALLBACK DialogProc( HWND hWnd, UINT UMsg, WPARAM wParam, LPARAM lParam ) 5.3 创建对话框 HWND CreateDialog( HINSTANCE hInstance, // handle to module LPCTSTR lpTempl

Win32 Windows编程 七

定时器消息 1. WM_TIMER 按照定时器设置的时间段,自动向窗口发送一个定时器消息WM_TIMER.优先级比较低 定时器精度比较低,毫秒级别,消息产生时间也精度比较低 2 .消息和函数 WM_TIMER : 消息ID wParam  定时器的ID lParam  定时器的处理函数 SetTimer :设置一个定时器 UINT_PTR SetTimer( HWND hWnd, // handle to window 窗口的句柄 可以为NULL UINT_PTR nIDEvent, // ti

Win32 Windows编程 八

一.系统菜单 1 执行从系统提供的窗口命令,例如最大化.关闭等命令.本质上和普通菜单一样,所以我们也可以在程序中使用这个菜单 2 系统菜单的使用 2.1 获取系统菜单 GetSystemMenu HMENU GetSystemMenu( HWND hWnd, //要获取的窗口句柄 BOOL bRevert; //获取重置标识 ): bRevert: TRUE 重置 FALSE 不重置 当为TRUE时 会将菜单重置成默认状态,并返回菜单句柄,为false菜单项不重置, 获取当前系统菜单的状态 2.

Win32 Windows编程 四

一 窗口注册和窗口创建的过程 1  Win32窗口程序创建步骤 1.1 WinMain入口函数的定义 1.2 WindowsProc 函数的定义 1.3注册窗口 RegisterClass/RegisterClassEx 1.4创建窗口 CreateWindow /CreateWindowEx 1.5 显示刷新窗口 ShowWindow/UpdateWindow 1.6 消息处理 GetMessage /DisptchMessage 1.7 窗口退出 WM_DESTROY:PostQuitMes