硬汉嵌入式论坛

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

[emWin实例] 关于emWIn不能同时显示多个小工具,向大神请教

[复制链接]

1

主题

3

回帖

1

积分

新手上路

积分
1
发表于 2015-8-24 14:49:17 | 显示全部楼层 |阅读模式
  1. #include <stddef.h>
  2. #include "stdio.h"
  3. #include "GUI.h"
  4. #include "DIALOG.h"
  5. #include "WM.h"
  6. #include "BUTTON.h"
  7. #include "CHECKBOX.h"
  8. #include "DROPDOWN.h"
  9. #include "EDIT.h"
  10. #include "FRAMEWIN.h"
  11. #include "LISTBOX.h"
  12. #include "MULTIEDIT.h"
  13. #include "RADIO.h"
  14. #include "SLIDER.h"
  15. #include "TEXT.h"
  16. #include "PROGBAR.h"
  17. #include "SCROLLBAR.h"
  18. #include "LISTVIEW.h"
  19. static int Count;
  20. static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] =
  21. {
  22.     {FRAMEWIN_CreateIndirect,"armfly" ,0,0,0,240,320,FRAMEWIN_CF_MOVEABLE,0},
  23.     {BUTTON_CreateIndirect, "BUTTON0" ,GUI_ID_BUTTON0,     20,80, 80,20,0,0},
  24.     {BUTTON_CreateIndirect, "BUTTON1" ,GUI_ID_BUTTON1,     140,80,80,20,0,0},
  25.     {TEXT_CreateIndirect,      "0000" ,GUI_ID_TEXT0,       90,10,140,48,0,0}
  26. };
  27. void PaintDialog(WM_MESSAGE *pMSG)
  28. {
  29.     WM_HWIN hWin = pMSG->hWin;
  30. }
  31. void InitDialog(WM_MESSAGE *pMSG)
  32. {
  33.     WM_HWIN hWin = pMSG->hWin;/* ¶Ô»°¿òμľä±ú */
  34.    
  35.     FRAMEWIN_SetFont(hWin,&GUI_Font24B_ASCII);
  36.     FRAMEWIN_SetTextAlign(hWin,GUI_TA_VCENTER | GUI_TA_CENTER);
  37.     FRAMEWIN_AddCloseButton(hWin,FRAMEWIN_BUTTON_RIGHT,0);
  38.     FRAMEWIN_AddMaxButton(hWin,FRAMEWIN_BUTTON_RIGHT,1);
  39.     FRAMEWIN_AddMinButton(hWin,FRAMEWIN_BUTTON_RIGHT,2);
  40.     FRAMEWIN_SetTitleHeight(hWin,30);
  41.     TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT0),&GUI_Font8_ASCII);
  42. }
  43. static void _cbCallback(WM_MESSAGE *pMSG)
  44. {
  45.     int NCode,Id;
  46.     char buf[10];
  47.     WM_HWIN hWin = pMSG->hWin;
  48.    
  49.     switch(pMSG->MsgId)
  50.     {
  51.         case WM_TIMER:
  52.             Count++;
  53.             sprintf(buf,"%04d",Count);
  54.             TEXT_SetText(WM_GetDialogItem(hWin,GUI_ID_TEXT0),(const char *) buf);
  55.             WM_RestartTimer(pMSG->Data.v,100);
  56.             break;
  57.         
  58.         case WM_PAINT:
  59.             PaintDialog(pMSG);
  60.             break;
  61.         
  62.         case WM_INIT_DIALOG:
  63.             InitDialog(pMSG);
  64.             break;
  65.         
  66.      /* °′ÏÂÄ3¸ö°′¼üoó·¢Ëíμ½μ±Ç°°üo¬½1μãμÄ′°¿ú */   
  67.         case WM_KEY:
  68.             switch(((WM_KEY_INFO *)(pMSG->Data.p))->Key)
  69.             {
  70.                 case GUI_KEY_ESCAPE:
  71.                     GUI_EndDialog(hWin,1);
  72.                     break;
  73.                
  74.                 case GUI_KEY_ENTER:
  75.                     GUI_EndDialog(hWin,0);
  76.                     break;
  77.             }
  78.             break;
  79.             
  80.             case WM_NOTIFY_PARENT:
  81.                 Id = WM_GetId(pMSG->hWinSrc);
  82.                 NCode = pMSG->Data.v;
  83.                 switch(Id)
  84.                 {
  85.                     case GUI_ID_OK:
  86.                         if(NCode == WM_NOTIFICATION_RELEASED)
  87.                         {
  88.                             GUI_EndDialog(hWin,0);
  89.                         }
  90.                     break;
  91.                         
  92.                     case GUI_ID_CANCEL:
  93.                         if(NCode == WM_NOTIFICATION_RELEASED)
  94.                         {
  95.                             GUI_EndDialog(hWin,0);
  96.                         }
  97.                     break;
  98.                         
  99.                     case GUI_ID_BUTTON0:
  100.                         switch(NCode)
  101.                         {
  102.                             case WM_NOTIFICATION_CLICKED:
  103.                                 break;
  104.                            
  105.                             case WM_NOTIFICATION_RELEASED:
  106.                                 break;
  107.                            
  108.                             case WM_NOTIFICATION_MOVED_OUT:
  109.                                 break;
  110.                            
  111.                         }
  112.                         break;
  113.                         
  114.                     case GUI_ID_BUTTON1:
  115.                         switch(NCode)
  116.                         {
  117.                             case WM_NOTIFICATION_CLICKED:
  118.                                 break;
  119.                            
  120.                             case WM_NOTIFICATION_RELEASED:
  121.                                 break;
  122.                            
  123.                             case WM_NOTIFICATION_MOVED_OUT:
  124.                                 break;
  125.                            
  126.                         }
  127.                         break;
  128.                 }
  129.                 break;            
  130.         default:
  131.             WM_DefaultProc(pMSG);
  132.     }
  133. }               
  134.                
  135. void Timer2_Task(void *p_arg)
  136. {
  137.     WM_HWIN hDlg;
  138.     WM_HTIMER hTimer;
  139.    
  140.     Count = 0;
  141.     WM_SetCreateFlags(WM_CF_MEMDEV);/* memory device */
  142.    
  143.     GUI_Init();
  144.     WM_SetDesktopColor(GUI_BLUE);
  145.     PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);
  146.     FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX);
  147.     BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX);
  148.     CHECKBOX_SetDefaultSkin(CHECKBOX_SKIN_FLEX);
  149.     DROPDOWN_SetDefaultSkin(DROPDOWN_SKIN_FLEX);
  150.     SCROLLBAR_SetDefaultSkin(SCROLLBAR_SKIN_FLEX);
  151.     SLIDER_SetDefaultSkin(SLIDER_SKIN_FLEX);
  152.     HEADER_SetDefaultSkin(HEADER_SKIN_FLEX);
  153.     RADIO_SetDefaultSkin(RADIO_SKIN_FLEX);
  154.    
  155.     hDlg = GUI_CreateDialogBox(_aDialogCreate,GUI_COUNTOF(_aDialogCreate),&_cbCallback,0,0,0);
  156.     hTimer = WM_CreateTimer(WM_GetClientWindow(hDlg),0,100,0);
  157.     while(1)
  158.     {
  159.         GUI_Delay(1000);
  160.     }
  161. }
复制代码
大神:源码如上,这是安福莱教程-对话框上使用定时器实例,我想在开发板上跑一边,结果这里面的小工具一次只能显示一个
例如:我显示Frame框架窗口,就不能显示BUTTON了,恳请大神指教原因~~~感谢
回复

使用道具 举报

1

主题

3

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2015-8-24 16:54:54 | 显示全部楼层
问题找到了,但出来了一个新的问题~
只要我将下面的这句给注释掉就OK了
  //FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX);
可是为什么要注释掉这句话呢???
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106749
QQ
发表于 2015-8-25 00:01:11 | 显示全部楼层
单看楼主的代码没问题,另外楼主说的显示了框架窗口就不能显示button不是 很理解,是指的不能够显示框架窗口上面的button吗。
回复

使用道具 举报

1

主题

3

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2015-8-26 16:28:19 | 显示全部楼层

回 eric2013 的帖子

eric2013:单看楼主的代码没问题,另外楼主说的显示了框架窗口就不能显示button不是 很理解,是指的不能够显示框架窗口上面的button吗。 (2015-08-25 00:01) 
是的,大神,现在可以显示了,
那是我把FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX);这句给注销掉了
小弟不明白为什么要注销这句话,恳请大神指点
回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
发表于 2015-8-27 13:45:30 | 显示全部楼层

回 liuchang 的帖子

liuchang:是的,大神,现在可以显示了,
那是我把FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX);这句给注销掉了
小弟不明白为什么要注销这句话,恳请大神指点 (2015-08-26 16:28) 
我怀疑是没有修改默认的堆栈造成的。

需要改启动文件,把stack改大一些,至少2k以上。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 03:25 , Processed in 0.174155 second(s), 31 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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