初级会员
积分 190
金钱 190
注册时间 2016-11-30
在线时间 92 小时
1 金钱
使用的是STemwin5.26版本。学习到重绘背景的时候出现了一个疑问。看了官方的demo,其中有一段代码不是特别理解
static void _cbBkWindow(WM_MESSAGE * pMsg) {
switch (pMsg->MsgId) {
case MSG_CHANGE_TEXT:
strcpy(_acInfoText, (char const *)pMsg->Data.p);
//个人认为此处应该加一个break;
case WM_PAINT:
GUI_SetBkColor(GUI_BLACK);
GUI_Clear();
GUI_SetColor(GUI_WHITE);
GUI_SetFont(&GUI_Font24_ASCII);
GUI_DispStringHCenterAt("WindowManager - Sample", 160, 5);
GUI_SetFont(&GUI_Font8x16);
GUI_DispStringAt(_acInfoText, 5, 40);
break;
default:
WM_DefaultProc(pMsg);
}
}
这是官方重绘背景的回调函数,为什么 case MSG_CHANGE_TEXT:这个分支没有写break;demo中除 case WM_PAINT:外只有一个分支,不会有什么问题, 当有多个分支的时候会出问题吧。个人认为写上break更为合适,此处的逻辑不够严谨。也许是我没有理解emwin的用意,希望大哥们科普。
我来回答