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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/Mr_liu_666/article/details/87720454

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

猜你喜欢

转载自blog.csdn.net/Mr_liu_666/article/details/87720454