硬汉嵌入式论坛

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

[emWin] 怎样使用定时器来更新显示时间

[复制链接]

45

主题

45

回帖

45

积分

初级会员

积分
45
发表于 2016-8-7 18:14:04 | 显示全部楼层 |阅读模式
WIN_PARA WinPara;   //用户使用的窗口额外数据
//app图标描述结构体
typedef struct{
const GUI_BITMAP  *pBitmap;   //app图标
const char   *pText;     //app图标名字
}BITMAP_ITEM;
//ICONVIEW显示的APP图标
static const BITMAP_ITEM BitmapItemTab1[]={
{&bmbag,  "Bag"},
{&bmbook,  "Book"},
{&bmbookshelf, "Booksh"},
{&bmbrowser, "Brower"},
{&bmcalendar, "Calendar"},
{&bmclipboard, "Clipboard"},
{&bmcompass, "Compass"},
{&bmcompose, "Cmpose"},

};
//桌面窗口WM_HBKWIN回调函数
void cb_BkWindow(WM_MESSAGE *pMsg)
{
int Id;
int NCode;
static int Iconview0_Sel;
char text_buffer[20];
WM_HWIN hText;

  switch(pMsg->MsgId)
{
case WM_PAINT:
            GUI_SetBkColor(GUI_BLACK); //设置当前背景色
            GUI_Clear();     //清除活动窗口                  
//   GUI_DrawBitmap(&bmguia1,0,0);  //绘制背景图片
   hText = WM_GetDialogItem(pMsg->hWin, GUI_ID_TEXT1);
    /* 转换rtc值至北京时间 */
    RTC_TimeCovr(&systmtime);      
    /* 转换成字符串 */
    sprintf(text_buffer,"%02d:%02d:%02d",systmtime.tm_hour,systmtime.tm_min,systmtime.tm_sec);   
    /* 输出时间 */
    TEXT_SetText(hText,text_buffer);

case WM_NOTIFY_PARENT:
   Id=WM_GetId(pMsg->hWinSrc);
   NCode=pMsg->Data.v;
   switch(Id)
   {  
case ID_ICONVIEW_0: //ICONVIEW0控件
     switch(NCode) //通知代码
     {
      case WM_NOTIFICATION_CLICKED:
       break;
      case WM_NOTIFICATION_RELEASED:
       Iconview0_Sel=ICONVIEW_GetSel(pMsg->hWinSrc);
      
    switch(Iconview0_Sel)
       {
        case 0:  //APP0
                                    if(BagAPPWin==NULL)CreateBagAPP();      //创建BagAPP
         break;
        case 1:  //APP1
                                    if(BookAPPWin==NULL)CreateBookAPP();    //创建BookAPP
         break;
                                case 2:  //APP2
                                    if(BookshAPPWin==NULL)CreateBookshAPP();    //创建BookshAPP
         break;
                                case 3:  //APP3
                                    if(BrowerAPPWin==NULL)CreateBrowerAPP();    //创建BrowerAPP
         break;
       }
       break;
      case WM_NOTIFICATION_SEL_CHANGED:
       break;
     }
   }
}
}
//ICONVIEW演示例程
void iconviewdemo(void)
{
int i;

//设置换肤
PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);
FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX);
PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);
BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX);
CHECKBOX_SetDefaultSkin(CHECKBOX_SKIN_FLEX);
DROPDOWN_SetDefaultSkin(DROPDOWN_SKIN_FLEX);
SCROLLBAR_SetDefaultSkin(SCROLLBAR_SKIN_FLEX);
SLIDER_SetDefaultSkin(SLIDER_SKIN_FLEX);
HEADER_SetDefaultSkin(HEADER_SKIN_FLEX);
RADIO_SetDefaultSkin(RADIO_SKIN_FLEX);
MULTIPAGE_SetDefaultSkin(MULTIPAGE_SKIN_FLEX);

WM_SetCallback(WM_HBKWIN,cb_BkWindow); //设置桌面窗口WM_HBKWIN的回调函数
//建立一个ICONVIEW作为主界面
WinPara.hWinStatus=ICONVIEW_CreateEx( 0,0,                    //左上角坐标
       320,240,                        //小工具的水平和垂直尺寸
       WM_HBKWIN,                      //父窗口为背景窗口
       WM_CF_SHOW|WM_CF_HASTRANS,      
       ICONVIEW_CF_AUTOSCROLLBAR_V,    //自动增加垂直滚动条
       ID_ICONVIEW_0,                  //小工具ID
       100,                            //图标的水平尺寸为100
       100);                           //图标的垂直尺寸为100
ICONVIEW_SetFont(WinPara.hWinStatus,&GUI_Font16_ASCII); //图标标签的字体
ICONVIEW_SetBkColor(WinPara.hWinStatus,ICONVIEW_CI_SEL,GUI_WHITE|0X70000000);  //设置小工具的背景色
ICONVIEW_SetSpace(WinPara.hWinStatus,GUI_COORD_X,15); //设置图标在 x 或 y 方向上的间距
ICONVIEW_SetSpace(WinPara.hWinStatus,GUI_COORD_Y,15);
ICONVIEW_SetIconAlign(WinPara.hWinStatus,ICONVIEW_IA_HCENTER|ICONVIEW_IA_VCENTER); //设置图标对齐
for(i=0;i<(GUI_COUNTOF(BitmapItemTab1));i++)
{
  ICONVIEW_AddBitmapItem(WinPara.hWinStatus,BitmapItemTab1.pBitmap,BitmapItemTab1.pText);
}
//年月日显示窗口
WinPara.hTextl = TEXT_CreateEx( 0, 0, 80, 20,
   WinPara.hWinStatus,WM_CF_SHOW,TEXT_CF_LEFT,GUI_ID_TEXT1,"");  
   TEXT_SetBkColor(WinPara.hTextl,GUI_INVALID_COLOR); //背景色
   TEXT_SetTextColor(WinPara.hTextl,GUI_BLUE);    //文本颜色
   TEXT_SetFont(WinPara.hTextl,&GUI_FontHZ16);  //字体


while(1)
{
  GUI_Delay(20);
}

}
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2016-8-8 09:48:18 | 显示全部楼层
参考我们智能家居的例子就行,主要看MainTask.C文件
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=5600
回复

使用道具 举报

270

主题

605

回帖

1415

积分

至尊会员

积分
1415
发表于 2016-8-8 13:15:48 | 显示全部楼层
怎么上来就乱帖一堆代码呢
连怎么个做法都没说
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2016-8-8 13:18:32 | 显示全部楼层

回 jplzl10000 的帖子

jplzl10000:怎么上来就乱帖一堆代码呢
连怎么个做法都没说 (2016-08-08 13:15) 
没事的,楼主也是老网友了[s:149]
回复

使用道具 举报

45

主题

45

回帖

45

积分

初级会员

积分
45
 楼主| 发表于 2016-8-8 18:23:45 | 显示全部楼层

回 eric2013 的帖子

你好参考了智能家居的例子,定时器开启程序就运行不了    帮我指导一下  TEXT文本是建立一个ICONVIEW作为主界面上的   捕获2.PNG 捕获3.PNG
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2016-8-9 00:39:04 | 显示全部楼层
WinPara.hWinStatus是谁的句柄,没有看到创建的函数。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2016-8-9 00:41:01 | 显示全部楼层
看到了,你的ICONVIEW是创建在桌面窗口的,显示时间的TEXT也应该创建到桌面窗口上面,这样应该就显示出来了,另外就是你的ICONVIEW别覆盖了文件控件的显示区。
回复

使用道具 举报

45

主题

45

回帖

45

积分

初级会员

积分
45
 楼主| 发表于 2016-8-10 09:07:59 | 显示全部楼层
捕获4.PNG 捕获5.PNG
TEXT和ICONVIEW分开了   但开启定时器时间也不能显示出来
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2016-8-10 12:21:19 | 显示全部楼层
1.jpg
回复

使用道具 举报

45

主题

45

回帖

45

积分

初级会员

积分
45
 楼主| 发表于 2016-8-10 18:55:59 | 显示全部楼层

回 eric2013 的帖子

eric2013: (2016-08-10 12:21) 
也不行,把时间放在WM_PAINT下      在while(1)中加入WM_InvalidateWindow(WinPara.hTextl);  能显示 但显示出来的字会闪   效果不好
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2016-8-11 10:56:23 | 显示全部楼层
按说定时器更新很容易,估计你的程序还是哪里有问题,不行直接用我智能家居的创建方式。
回复

使用道具 举报

10

主题

20

回帖

50

积分

初级会员

螺旋是时间最美的曲线。

积分
50
发表于 2016-8-11 11:21:18 | 显示全部楼层
自己定义一个广播消息吧,每个窗口都能收到,timer有的窗口传不进去

pMsgInfo.hWin=hWin_Current;
       pMsgInfo.MsgId = WM_REFRESH;
    WM_BroadcastMessage(&pMsgInfo);//向所有窗口广播消息
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-18 01:08 , Processed in 0.053422 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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