硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4375|回复: 3
收起左侧

[emWin] STemwin界面刷新不正常

[复制链接]

14

主题

11

回帖

53

积分

初级会员

积分
53
发表于 2020-7-15 18:49:31 | 显示全部楼层 |阅读模式
本帖最后由 bdjinger 于 2020-7-15 19:00 编辑

我用armflyV5中【第69期:全键盘拼音输入法界面设计】的例程,芯片是stm32f407
在主界面创建了几个按钮,然后在按钮上写了几个字
  1. static void _MainInterface(void)
  2. {

  3.         WIDGET_SetDefaultEffect_None();
  4.         BUTTON_SetDefaultFont(&GUI_Font24_1);        
  5.         TEXT_SetDefaultFont(&GUI_Font24_1);
  6.         TEXT_SetDefaultTextColor(GUI_BLACK);

  7.         BUTTON_SetDefaultTextColor(GUI_BLACK, BUTTON_CI_UNPRESSED);
  8.         hButton_SET = BUTTON_CreateEx(260,150,50,55,0,WM_CF_SHOW,0,Main_ID_SystemSet);
  9.         hButton_CAL = BUTTON_CreateEx(335,150,50,55,0,WM_CF_SHOW,0,Main_ID_CAL);
  10.         hButton_FunCAL = BUTTON_CreateEx(410,150,50,55,0,WM_CF_SHOW,0,Main_ID_FineCAL);

  11.         hButton_DIS = BUTTON_CreateEx(260,215,50,55,0,WM_CF_SHOW,0,Main_ID_Dispense);
  12.         hButton_Volum = BUTTON_CreateEx(335,215,50,55,0,WM_CF_SHOW,0,Main_ID_Volum);
  13.         hButton_FixTime = BUTTON_CreateEx(410,215,50,55,0,WM_CF_SHOW,0,Main_ID_FixTime);
  14.         
  15.         TEXT_CreateEx(20,20,50,20,0,WM_CF_SHOW,TEXT_CF_HCENTER|TEXT_CF_VCENTER,0,"Hello word");
  16.         
  17.         TEXT_SetDefaultFont(&GUI_Font24_1);
  18.         TEXT_SetDefaultTextColor(GUI_BLACK);        

  19.         
  20.         BUTTON_SetText(hButton_SET, "Hello word");
  21.         BUTTON_SetText(hButton_CAL, "流量校正");
  22.         BUTTON_SetText(hButton_FunCAL, "流量微调");
  23.         BUTTON_SetText(hButton_DIS, "定时定量");
  24.         BUTTON_SetText(hButton_Volum, "定量计量");
  25.         BUTTON_SetText(hButton_FixTime, "定时启停");
  26.         

  27.         
  28. }
  29. static void _cbBkWindow(WM_MESSAGE* pMsg)
  30. {
  31.         int NCode, Id;
  32.         switch (pMsg->MsgId)
  33.         {
  34.         case WM_PAINT:
  35.                 GUI_SetBkColor(GUI_WHITE);
  36.                 GUI_Clear();
  37.                 _MainInterface();
  38.                 break;
  39.         case WM_NOTIFY_PARENT:               
  40.                 Id = WM_GetId(pMsg->hWinSrc);
  41.                 NCode = pMsg->Data.v;
  42.                 switch (Id)
  43.                 {
  44.                         case Main_ID_SystemSet:
  45.                                 switch(NCode)
  46.                                 {
  47.                                         case WM_NOTIFICATION_RELEASED:        
  48.                                                 
  49.                                                 break;
  50.                                 }
  51.                                 break;
  52.                 }
  53.                 break;
  54.         default:
  55.                 WM_DefaultProc(pMsg);
  56.                 break;
  57.         }
  58. }

  59. void MainInterfaceFun(void)
  60. {
  61.         OS_ERR err;         
  62.         test = 0;
  63.         WM_SetCallback(WM_HBKWIN,_cbBkWindow);
  64.         _MainInterface();  //桌面按钮        
  65.         while(1)
  66.         {        
  67.                 GUI_Exec();
  68.                 GUI_X_ExecIdle();                        
  69.         }
  70. }
复制代码

GUI_X_ExecIdle();里面是delay50

编码格式用的是UTF-8,然后用官方的字体软件生成的中文字体。现在的问题是界面刚出来的时候,按钮上的字不会显示,如果按一下按钮,按钮上的字才会显示出来。
但是如果用GUI自带的字体,就可以显示出来。

而且即便文字显示出来,感觉屏幕也不正常;就是每次点一个按钮,就可以看到这几个按钮快速的刷,刷一会儿就停了。我在触摸的里面打了断点,几个按钮刷的时候,并没有发送触摸事件。

希望帮忙解答一下,本来拍了视频上传,可以传不上来。文字应该描述清楚了。

normal video.mp4

1.43 MB, 下载次数: 10

normal video1.mp4

879.21 KB, 下载次数: 1

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115787
QQ
发表于 2020-7-16 01:01:21 | 显示全部楼层
QQ截图20200716010112.jpg
回复

使用道具 举报

14

主题

11

回帖

53

积分

初级会员

积分
53
 楼主| 发表于 2020-7-16 15:24:05 | 显示全部楼层

那个是之前调试的时候弄的,忘记删了
我这个相当于在父窗口创建的吧,在下面的函数里面有调用这个初始化函数。我也试着把这个初始化函数放在初始化消息里,还是不行,必须点击一下按钮才能刷出来字。用GUI自带的字体就没有关系。
  1. static void _cbBkWindow(WM_MESSAGE* pMsg)
  2. {
  3.         int NCode, Id;
  4.         switch (pMsg->MsgId)
  5.         {
  6.         case WM_INIT_DIALOG:
  7.                 _MainInterface();
  8.                 break;
  9.         case WM_PAINT:
  10.                 GUI_SetBkColor(GUI_WHITE);
  11.                 GUI_Clear();
  12. //                _MainInterface();
  13.                 break;
  14.         case WM_NOTIFY_PARENT:               
  15.                 Id = WM_GetId(pMsg->hWinSrc);
  16.                 NCode = pMsg->Data.v;
  17.                 switch (Id)
  18.                 {
  19.                         case Main_ID_SystemSet:
  20.                                 switch(NCode)
  21.                                 {
  22.                                         case WM_NOTIFICATION_RELEASED:       
  23.                                                
  24.                                                 break;
  25.                                 }
  26.                                 break;
  27.                 }
  28.                 break;
  29.         default:
  30.                 WM_DefaultProc(pMsg);
  31.                 break;
  32.         }
  33. }

  34. void MainInterfaceFun(void)
  35. {
  36.         OS_ERR err;        
  37.         test = 0;
  38.         _MainInterface();  //桌面按钮       
  39.         WM_SetCallback(WM_HBKWIN,_cbBkWindow);
  40.        
  41.         while(1)
  42.         {               
  43.                
  44.                 GUI_Exec();
  45.                 GUI_X_ExecIdle();                       
  46.         }
  47. }
复制代码
回复

使用道具 举报

14

主题

11

回帖

53

积分

初级会员

积分
53
 楼主| 发表于 2020-7-16 16:40:27 | 显示全部楼层
算是解决了吧,在这个函数中增加了GUI_UC_SetEncodeUTF8();,之前这句话在更前面的函数中
  1. void MainInterfaceFun(void)
  2. {
  3.         OS_ERR err;        
  4.         test = 0;
  5.         GUI_UC_SetEncodeUTF8();
  6.         WM_SetCallback(WM_HBKWIN,_cbBkWindow);
  7.         _MainInterface();  //桌面按钮               
  8.         while(1)
  9.         {               
  10.                
  11.                 GUI_Exec();
  12.                 GUI_X_ExecIdle();                       
  13.         }
  14. }
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-19 05:04 , Processed in 0.208719 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表