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

本文详细介绍了在EmWin中如何设置字体、背景及文本颜色,并通过Button控制实现文本的精确显示。包括如何在Button按下时更新显示,解决背景颜色不更新及文本不显示的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值