作者:a98246813 | 来源:互联网 | 2023-09-04 16:05
说到EmWin显示文本,大概就是设置字体大小,设置背景颜色,清屏(背景颜色更新),设置文本颜色,设置文字显示格式,再就是显示了:
GUI_SetFont(&GUI_Font8x16);
GUI_SetBkColor(GUI_BLUE);
GUI_Clear();
GUI_SetColor(GUI_RED);
GUI_SetTextMode(GUI_TM_NORMAL);
GUI_DispStringAt("I AM A STRING FOR TEST",0,200);
如果您要是不需要太精细的控制,甚至就一句显示,也成:
GUI_DispStringAt("I AM A STRING FOR TEST",0,200);
到了Button控制显示文字我也没觉得会有什么不同,无非就是在回调函数里面按钮按下的那种情况下displaystring
case WM_NOTIFY_PARENT:Id = WM_GetId(pMsg->hWinSrc);NCode = pMsg->Data.v;switch(Id) {case ID_BUTTON_0: // Notifications sent by 'Button'switch(NCode) {case WM_NOTIFICATION_CLICKED:GUI_SetFont(&GUI_Font8x16);GUI_SetBkColor(GUI_BLUE);GUI_Clear();GUI_SetColor(GUI_RED);GUI_SetTextMode(GUI_TM_NORMAL);GUI_DispStringAt("I AM A STRING FOR TEST",0,200);break;case WM_NOTIFICATION_RELEASED:break;}
现象如下,按下了button,背景颜色没变,没有文本显示:
查资料和手册发现,绘制的对象,不是当前的显示窗口,而是“画板”,但是需要占用当前的窗口,所以在绘制之前,保存原窗口,绘制之后,打开原窗口,就把画板绘制到窗口上。这样就显示了:
回调函数先加一个hWinOld:
static void _cbDialog(WM_MESSAGE * pMsg) {WM_HWIN hItem,hWinOld;int NCode;int Id;
然后就是“保存原窗口”,画板绘制,显示经过“画板”变化的原窗口:
case WM_NOTIFY_PARENT:Id = WM_GetId(pMsg->hWinSrc);NCode = pMsg->Data.v;switch(Id) {case ID_BUTTON_0: // Notifications sent by 'Button'switch(NCode) {case WM_NOTIFICATION_CLICKED:hWinOld = WM_SelectWindow(WM_GetClientWindow(pMsg->hWin));GUI_DispStringAt("I AM A STRING FOR TEST",150,200);/* 配置回之前选择的目标窗口 */WM_SelectWindow(hWinOld);break;case WM_NOTIFICATION_RELEASED:break;}