硬汉嵌入式论坛

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

[emWin] 官方WIDGET_Edit例子有BUG,需要做修改

[复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116831
QQ
发表于 2014-4-26 10:34:00 | 显示全部楼层 |阅读模式
  1. /*********************************************************************
  2. *
  3. *       _cbBk
  4. */
  5. static void _cbBk(WM_MESSAGE * pMsg) {
  6.   static WM_HWIN hEdit;
  7.   static U8      ShowText;
  8.   char           aBuffer[TEXT_MAXLEN];
  9. hEdit    = 0;
  10. ShowText = 0;
  11.   switch (pMsg->MsgId) {
  12.   case WM_PAINT:
  13.     GUI_SetBkColor(GUI_DARKGRAY);
  14.     GUI_Clear();
  15.     GUI_SetFont(&GUI_Font24_ASCII);
  16.     GUI_DispStringHCenterAt("WIDGET_Edit - Sample", 160, 5);
  17.     GUI_SetFont(&GUI_Font8x16);
  18.     if (ShowText) {
  19.       GUI_DispStringHCenterAt("The string you have modified is:", 160, 90);
  20.       EDIT_GetText(hEdit, aBuffer, TEXT_MAXLEN);
  21.       GUI_DispStringHCenterAt(aBuffer, 160, 110);
  22.     } else {
  23.       GUI_DispStringHCenterAt("Use keyboard to modify string...", 160, 90);
  24.     }
  25.     break;
  26.   case WM_APP_SHOW_TEXT:
  27.     if (hEdit == 0) {
  28.       hEdit = pMsg->hWinSrc;
  29.     }
  30.     WM_HideWindow(hEdit);
  31.     ShowText = 1;
  32.     WM_InvalidateWindow(WM_HBKWIN);
  33.     WM_CreateTimer(WM_HBKWIN, 0, 3000, 0);
  34.     break;
  35.   case WM_TIMER:
  36.     ShowText = 0;
  37.     WM_InvalidateWindow(WM_HBKWIN);
  38.     WM_ShowWindow(hEdit);
  39.     break;
  40.   default:
  41.     WM_DefaultProc(pMsg);
  42.   }
  43. }
复制代码
这个函数有BUG
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116831
QQ
 楼主| 发表于 2014-4-26 10:35:27 | 显示全部楼层
修改为如下:
  1. /*********************************************************************
  2. *
  3. *       _cbBk
  4. */
  5. static void _cbBk(WM_MESSAGE * pMsg) {
  6.   static WM_HWIN hEdit = 0;
  7.   static U8      ShowText = 0;
  8.   char           aBuffer[TEXT_MAXLEN];
  9. //  hEdit    = 0;
  10. //  ShowText = 0;
  11.   switch (pMsg->MsgId) {
  12.   case WM_PAINT:
  13.     GUI_SetBkColor(GUI_DARKGRAY);
  14.     GUI_Clear();
  15.     GUI_SetFont(&GUI_Font24_ASCII);
  16.     GUI_DispStringHCenterAt("WIDGET_Edit - Sample", 160, 5);
  17.     GUI_SetFont(&GUI_Font8x16);
  18.     if (ShowText) {
  19.       GUI_DispStringHCenterAt("The string you have modified is:", 160, 90);
  20.       EDIT_GetText(hEdit, aBuffer, TEXT_MAXLEN);
  21.       GUI_DispStringHCenterAt(aBuffer, 160, 110);
  22.     } else {
  23.       GUI_DispStringHCenterAt("Use keyboard to modify string...", 160, 90);
  24.     }
  25.     break;
  26.   case WM_APP_SHOW_TEXT:
  27.     if (hEdit == 0) {
  28.       hEdit = pMsg->hWinSrc;
  29.     }
  30.     WM_HideWindow(hEdit);
  31.     ShowText = 1;
  32.     WM_InvalidateWindow(WM_HBKWIN);
  33.     WM_CreateTimer(WM_HBKWIN, 0, 3000, 0);
  34.     break;
  35.   case WM_TIMER:
  36.     ShowText = 0;
  37.     WM_InvalidateWindow(WM_HBKWIN);
  38.     WM_ShowWindow(hEdit);
  39.     break;
  40.   default:
  41.     WM_DefaultProc(pMsg);
  42.   }
  43. }
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-7 14:16 , Processed in 0.208756 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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