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, // timer identifier 定时器的ID 0为不预设ID UINT uElapse, // time-out value 定时器时间间隔 TIMERPROC lpTimerFunc // timer procedure 定时器的处理函数, 能够为NULL );
返回一个创建好的定时器ID
KillTimer : 结束一个定时器
BOOL KillTimer( HWND hWnd, // handle to window 窗体的句柄 UINT_PTR uIDEvent // timer identifier 定时器ID );
TimerProc : 定时器处理函数
VOID CALLBACK TimerProc( HWND hwnd, // handle to window 窗体句柄 UINT uMsg, // WM_TIMER message WM_TIMER消息ID UINT_PTR idEvent, // timer identifier 定时器ID DWORD dwTime // current system time 当前系统时间 );
3、使用方式
3.1 创建定时器
3.1.1 指定窗体句柄HWND 那么TIMERPROC參数能够为空,那么WM_TIMER消息将会发送给指定窗体,
假设未指定,TIMERPROC不能为空,必须指定定时器处理程序。
3.1.2 假设定时器ID SetTimer会依照这个ID创建定时器。假设未指定,会返回一个创建定时器ID
3.2 处理定时器消息
能够依据消息传入定时器ID号 分别处理
3.3 结束定时器
在不使用时。 KillTimer 结束定时器
菜单
1、菜单基础
菜单- 每一个菜单会有一个HMENU句柄
菜单项:每一个菜单项会有一个ID号。能够依据这个ID运行不同的操作
2、菜单创建
2.1 菜单的创建
CreateMenu - MENU 菜单
CreatePopupMenu - POPUPMENU 弹出式菜单
AppendMenu - 添加菜单项
BOOL AppendMenu( HMENU hMenu, // handle to menu 菜单句柄 UINT uFlags, // menu-item options 菜单项标识 UINT_PTR uIDNewItem, // identifier, menu, or submenu 菜单项的ID或者自带单句柄 LPCTSTR lpNewItem // menu-item content 菜单项的名称 );
uFlagsMF_STRING - lpNewItem是一个字符串
MF_POPUP - uIDNewItem是一个子菜单句柄
MF_SEPARATOR - 添加切割项
MF_CHECKET/MF_UNCHECKED -设置和取消菜单项的对勾
MF_DISABLED / MF_ENABLE - 菜单项禁止和同意状态
2.2 菜单的命令响应
2.2.1 WM_CONMAND消息
当用户点击菜单、button控件等时,系统会向窗体发送WM_COMMAND消息。
WPARAM: HIWORD 通知消息的标识
LOWORD 产生消息ID号/或者其它一些东西
LPARAM: 控件的句柄, 对于菜单为空
2.2.2 命令处理
依据消息项的ID号 作对应处理
2.3 菜单项的状态
2.3.1 WM_INITMENUPOPUP 消息
当用户点击菜单显示弹出式菜单之前。下同会向窗体发送WM_INITMENUPOPUP
WPARAM 是菜单句柄
LPARAM : LOWORD 菜单位置
HIWORD 是否是系统菜单
2.3.2 命令处理