热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

EmWin学习课堂_小白EmWin_EmWin快速入门_EmWin用Button控件显示文本

说到EmWin显示文本,大概就是设置字体大小,设置背景颜色,清屏(背景颜色更新),设置文本颜色&

说到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;}


推荐阅读
author-avatar
a98246813
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有