硬汉嵌入式论坛

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

[μCGUI] 硬汉大哥,又有问题请教了,就是图标到各个功能实现问题

[复制链接]

14

主题

34

回帖

14

积分

新手上路

积分
14
发表于 2014-8-29 12:42:54 | 显示全部楼层 |阅读模式
如下:我现在建立了3个任务
         /*****´´½¨ÆäËûÈÎÎñ****/
void App_TaskCreate()      //½¨Á¢ÆäËûµÄÈÎÎñ
{
OSTaskCreate(APP_TASK_Touch,NULL,&APP_TASK_T[APP_TASK_Size-1],APP_TASK_Touch_Pro);  //´触摸任务

OSTaskCreate(APP_Init_DeskTop ,NULL,&APP_TASK_Init[APP_TASK_Size-1],APP_TASK_Init_Pro) ;  // 桌面图标任务,在这里面实现触摸到各功能的创建
OSTaskCreate(UpData_Task ,NULL,&APP_TASK_U[APP_TASK_Size-1],  APP_TASK_UpDa_Pro ) ;    // 时间更新任务
}
现在是在APP_Init_DeskTop 这个里面实现图标到各功能,我是这样弄的:
     void APP_Init_DeskTop()
{
  WM_SetCreateFlags(WM_CF_MEMDEV); //ʹÓô洢É豸
WM_SetCallback(WM_HBKWIN, &_Init_cbBkWindow);//ÉèÖñ³¾°»Øµ÷º¯Êý
/*****ÒòΪ´´½¨µÄÈÎÎñ¶¼ÊÇ·Ç×èÈûʽµÄ******/
_CreateFrame(&_Init_cb_first);  //在这个第一个窗口里创建图标,并且实现各个功能
while(!0)
{
  OSTimeHSMS(0,0,0,500); //500ºÁÃëÏìÓ¦Ò»´Î
}
}
而上面的(_Init_cb_first)这回调函数如下:

static void _Init_cb_first(WM_MESSAGE* pMsg)
{
u8 dx=85,dy=65;
  WM_HWIN hButton;
WM_HWIN hWin = pMsg->hWin; //»ñÈ¡Ô´Îļþ
  switch (pMsg->MsgId)
{
  case WM_CREATE:
   WM_SetFocus(hWin); //Õâ¸ö±íʾ¾Û½¹µ½µ±Ç°´°¿Ú
    hButton= _CreateButton(hWin, "", GUI_ID_BUTTON0, 5+0*dx, 5, 70,60 , 0);
   BUTTON_SetBitmap(hButton,0,&bmqq);
   hButton= _CreateButton(hWin, "", GUI_ID_BUTTON1, 5+1*dx, 5, 70,60 , 0);
   BUTTON_SetBitmap(hButton,0,&bmLOL);
   hButton= _CreateButton(hWin, "", GUI_ID_BUTTON2, 5+2*dx, 5, 70,60 , 0);
   BUTTON_SetBitmap(hButton,0,&bmpicture);
  
   hButton= _CreateButton(hWin, "", GUI_ID_BUTTON3, 5+0*dx, 5+1*dy, 70,60 , 0);
   BUTTON_SetBitmap(hButton,0,&bmPEOPLE);
   hButton= _CreateButton(hWin, "", GUI_ID_BUTTON4, 5+1*dx, 5+1*dy, 70,60 , 0);
   BUTTON_SetBitmap(hButton,0,&bmMP3);
   hButton= _CreateButton(hWin, "", GUI_ID_BUTTON5, 5+2*dx, 5+1*dy, 70,60 , 0);
   BUTTON_SetBitmap(hButton,0,&bmATM);
  
   hButton= _CreateButton(hWin, "", GUI_ID_BUTTON6, 5+0*dx, 5+2*dy, 70,60 , 0);
   BUTTON_SetBitmap(hButton,0,&bmrong);
   hButton= _CreateButton(hWin, "", GUI_ID_BUTTON7, 5+1*dx, 5+2*dy, 70,60 , 0);
   BUTTON_SetBitmap(hButton,0,&bmfish);
      
    hButton= _CreateButton(hWin, "", GUI_ID_BUTTON8, 5+2*dx, 5+2*dy, 70,60 , 0);
   BUTTON_SetFont      (hButton,    &GUI_Font8x16);
   BUTTON_SetTextColor (hButton, 0, GUI_BLUE);
   BUTTON_SetText(hButton, pText="Time");
   //BUTTON_SetBitmap(hButton,0,&bmqq);
    break;
  case WM_PAINT:
   
     WM_GetClientRect(&r);
   GUI_SetBkColor(GUI_LIGHTRED);
    GUI_Clear();
   break;
  case WM_NOTIFY_PARENT:    //这个地方实现各个功能建立,执行
   if (pMsg->Data.v == WM_NOTIFICATION_RELEASED)
   {
    int Id = WM_GetId(pMsg->hWinSrc); //Ô´´°¿Ú
    switch (Id)
    {
     case  GUI_ID_BUTTON0 :
      /*****´´½¨QQ****/
     break;
     case  GUI_ID_BUTTON1 :
      /****´´½¨Ó¢ÐÛÁªÃËÈÎÎñ****/
     break;
     case  GUI_ID_BUTTON2 :
      /****´´½¨ÕÕÏàÈÎÎñ********/
     break;
     case  GUI_ID_BUTTON3 :
      /****´´½¨Í¼ƬÈÎÎñ*****/
     break;
    case  GUI_ID_BUTTON4 :
      /****´´½¨MP3ÈÎÎñ****/
     OSTaskCreate(MP3_Play,NULL,&APP_TASK_T[APP_TASK_Size-1],APP_TASK_Touch_Pro);
     /*****************这个地方是最不知道对不对的了,因为这个任务是在窗口任务里创建的,而这又创建了一个任务,不知对不对*****/
    /*****************也不知道你是怎么建立的,希望硬汉大哥指导一下,谢谢***********************/
     break;
     case  GUI_ID_BUTTON5 :
      /****´´½¨ATMÈ¡¿î»úµÄÈÎÎñ****/
     break;
     case  GUI_ID_BUTTON6 :
      /****´´½¨¼ÆËãÆ÷µÄÈÎÎñ*****/
     break;
     case  GUI_ID_BUTTON7 :
      /****´´½¨Ï´Ò»úµÄÈÎÎñ*****/
     break;
     case  GUI_ID_BUTTON8 :
      /****´´½¨Ê±ÖÓÈÎÎñ****/
     break;
    }
   }
  break;
  default:
  WM_DefaultProc(pMsg);       //ĬÈÏ´¦Àí
  
}
}
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107157
QQ
发表于 2014-8-29 12:45:59 | 显示全部楼层
你可以把你的MDK装上微软雅黑字体,要不复制出来的汉字都是乱码,这里是方法,很方便:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=2293
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107157
QQ
发表于 2014-8-29 12:51:07 | 显示全部楼层
1. 其实你可以把这些需要的任务都创建好,因为使用UCOS的话,你会提前把使用的任务堆栈都分配好,你可以使用相应的任务前把这个任务挂起,需要的时候在恢复即可。
2. 另外emWin部分的各个子界面或者说子系统,你可以使用状态机的形式,这样更加方便管理,emWin只占用两个任务,还有一个是触摸任务。
回复

使用道具 举报

14

主题

34

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2014-8-29 13:06:22 | 显示全部楼层

回 eric2013 的帖子

eric2013:1. 其实你可以把这些需要的任务都创建好,因为使用UCOS的话,你会提前把使用的任务堆栈都分配好,你可以使用相应的任务前把这个任务挂起,需要的时候在恢复即可。
2. 另外emWin部分的各个子界面或者说子系统,你可以使用状态机的形式,这样更加方便管理,emWin只占用两个任务,还 .. (2014-08-29 12:51)
1,对于1中疑惑:依照你说的这个,就连桌面和其他的任务都不相关,各自创建任务,然后挂起不用的任务,开启桌面任务,点击到相应的按钮上时,再挂起桌面任务,恢复相应的任务,是这样的吗?
2,对于你说的界面操作的话用状态机,那么是在创建不同任务时给不同的标志位,来实现哪个界面的显示?
3,谢谢LZ,顶
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107157
QQ
发表于 2014-8-29 14:29:58 | 显示全部楼层
1. 是这样的。
2. 实现方法可以参考V5板子的那个综合例子。
回复

使用道具 举报

14

主题

34

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2014-8-30 10:06:41 | 显示全部楼层

回 eric2013 的帖子

eric2013:1. 是这样的。
2. 实现方法可以参考V5板子的那个综合例子。 (2014-08-29 14:29)
硬汉哥,我创建里8个任务,程序就死机了,什么都没有,我用串口打印我以为是堆栈出问题,可是也没什么显示,是不是内存不足啊,我编译下载刚好512 K,怎么弄
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107157
QQ
发表于 2014-8-30 10:12:37 | 显示全部楼层

回 1756143812 的帖子

1756143812:硬汉哥,我创建里8个任务,程序就死机了,什么都没有,我用串口打印我以为是堆栈出问题,可是也没什么显示,是不是内存不足啊,我编译下载刚好512 K,怎么弄 (2014-08-30 10:06) 
ROM是512KB?
回复

使用道具 举报

14

主题

34

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2014-8-30 12:56:39 | 显示全部楼层

回 eric2013 的帖子

eric2013:ROM是512KB? (2014-08-30 10:12)
就是我用串口下载的时候,显示下载的为512KB
回复

使用道具 举报

14

主题

34

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2014-8-30 12:57:43 | 显示全部楼层

回 1756143812 的帖子

1756143812:就是我用串口下载的时候,显示下载的为512KB (2014-08-30 12:56)
可是我又看了原子的综合实验,他说才200多KB,什么问题,我什么地方占内存了吗
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 21:43 , Processed in 0.235778 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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