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;
posted @ 2023-11-02 17:02  不想解决BUG的李优秀  阅读(139)  评论(0编辑  收藏  举报