首页 > 代码库 > Win32 Windows编程 七

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			菜单项的名称
);

uFlags
MF_STRING - lpNewItem是一个字符串

MF_POPUP -  uIDNewItem是一个子菜单句柄

MF_SEPARATOR - 增加分割项

MF_CHECKET/MF_UNCHECKED -设置和取消菜单项的对勾

MF_DISABLED  / MF_ENABLE - 菜单项禁止和允许状态


2.2 菜单的命令响应

2.2.1 WM_CONMAND消息

当用户点击菜单、按钮控件等时,系统会向窗口发送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 命令处理