EMWIN GUI 消息
一些前言
EMWIN V5.12中文手册
消息
1.WM_PAINT
1.1作用
重绘页面
1.2触发机制
- 程序首次启动时;
- 窗口被移动;
1.3官方事例
点击查看代码
void WinHandler(WM_MESSAGE * pMsg) {
switch (pMsg->MsgId) {
case WM_PAINT: //触发重绘
GUI_SetBkColor(0xFF00);
GUI_Clear();
GUI_DispStringAt("Hello world",0,0);
break;
default:
WM_DefaultProc(pMsg);
}
}
2.WM_CREATE
2.1作用
窗口创建后,运行一次消息后面跟的处理函数
2.2 触发机制
- 窗口创建后
2.3 官方事例
点击查看代码
//暂无
2.4 需要注意的事
只有WM_CreateWindowAsChild(),才会发送WM_CREATE消息,使用WM_CreateWindow(); WINDOW_CreateEx();等其它创建窗口的函数,均不会创建此消息!
3.WM_TIMER
3.1作用
定时器消息,顾名思义为定时器触发消息,相当于STM32的定时器
3.2触发机制
- 定时中断,配合WM_CreateTimer()使用;
2.3官方事例
点击查看代码
static void _cbWin(WM_MESSAGE * pMsg) {
switch (pMsg->MsgId) {
case WM_TIMER:
/*
... do something ...
*/
WM_RestartTimer(pMsg->Data.v, 1000);
break;
default:
WM_DefaultProc(pMsg);
}
}
static void _DemoTimer(void) {
WM_HWIN hWin;
WM_HTIMER hTimer;
hWin = WM_CreateWindow(10, 10, 100, 100, WM_CF_SHOW, _cbWin, 0);
hTimer = WM_CreateTimer(hWin, 0, 1000, 0);
while (1) {
GUI_Exec();
}
}
4. WM_KEY
4.1作用
处理按键消息
4.2 触发机制
当有按键按下时
4.3 事例
点击查看代码
/*
如果是嵌入式 则需要通过GUI_SendKeyMsg()函数传值;
GUI_SendKeyMsg(GUI_KEY_END, 1);
*/
unsigned int ReadData;
case WM_KEY:
if(((WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt>0) {
case GUI_ID_ESCAPE:
//GUI_EndDialog(hWin, 1);
break;
case GUI_ID_ENTER:
//GUI_EndDialog(hWin, 0);
break;
}
break;