硬汉嵌入式论坛

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

[emWin] 关于实例66期-智能家居 WM_SetFocus(hWinICON)焦点函数的问题

[复制链接]

4

主题

14

回帖

26

积分

新手上路

积分
26
发表于 2014-11-30 22:58:09 | 显示全部楼层 |阅读模式
1、实验设备:X3开发板  + 7英寸TFT屏(RA8875)
2、实验内容:实例66期-智能家居
3、问题:成功将V5实例66期移植到X3学习板上,想进行小改动,在开机完成后,图标背影(白色)默认 到第一个,但实例中必须通过按键K3来完成图标背影的显示(执行的是WM_SetFocus(hWinICON)函数),把这个函数放到MainTask 主循环中,屏幕不显示,出错,又对比了ST官方例程(WIDGET_iconView),WM_SetFocus(hWinICON)是放在主循环中,想了很久也没出是什么原因,请大家帮忙分析一下。(本人采用的是FreeRTOS 系统,定时20ms 调GUI_Exec();函数)
万分感谢!
X3的程序如下(MainTask):

void MainTask (void)
{
    int uiCycTimes;
    GUI_Init();                                         /* 初始化并创建对话框 */
    WM_SetCreateFlags(WM_CF_MEMDEV);
    //
    //FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX);        
    //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);
    //
    GUI_UC_SetEncodeUTF8();                         /* 使能UTF-8解码用于汉字显示 */
    hWinMain = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
    //
    /*在指定位置创建指定尺寸的ICONVIEW 小工具*/
    hWinICON = ICONVIEW_CreateEx(20,                 /* 小工具的最左像素(在父坐标中)*/
                             45,                     /* 小工具的最上像素(在父坐标中)*/
                             440,                    /* 小工具的水平尺寸(单位:像素)*/
                             200,                     /* 小工具的垂直尺寸(单位:像素)*/
                             hWinMain,                         /* 父窗口的句柄。如果为0 ,则新小工具将成为桌面(顶级窗口)的子窗口 */
                             WM_CF_SHOW | WM_CF_HASTRANS,       /* 窗口创建标记。为使小工具立即可见,通常使用 WM_CF_SHOW */
                             0,//ICONVIEW_CF_AUTOSCROLLBAR_V,     /* 默认是0,如果不够现实可设置增减垂直滚动条 */
                             GUI_ID_ICONVIEW0,                     /* 小工具的窗口ID */
                             82,                     /* 图标的水平尺寸 */
                             80);/* 图标的垂直尺寸 */
   

    /* 向ICONVIEW 小工具添加新图标 */
    for (uiCycTimes = 0; uiCycTimes < GUI_COUNTOF(_aBitmapItem); uiCycTimes++)
    {   
        ICONVIEW_AddBitmapItem(hWinICON, _aBitmapItem[uiCycTimes].pBitmap, _aBitmapItem[uiCycTimes].pText);
    }
   
    /* 设置小工具的背景色 32 位颜色值的前8 位可用于alpha混合处理效果*/
    ICONVIEW_SetBkColor(hWinICON, ICONVIEW_CI_SEL, GUI_WHITE | 0xC0000000);
    ICONVIEW_SetTextColor(hWinICON, ICONVIEW_CI_SEL,GUI_RED);                               // 在选中情况下,让图标中文字体显示红色
    //
   
    /* 设置字体 */
    ICONVIEW_SetFont(hWinICON, &GUI_FontYahei);
   
    /* 设置图标在x 或y 方向上的间距。*/
    ICONVIEW_SetSpace(hWinICON, GUI_COORD_Y, 10);
   
    /* 设置对齐方式 在5.22版本中最新加入的 */
    ICONVIEW_SetIconAlign(hWinICON, ICONVIEW_IA_HCENTER|ICONVIEW_IA_TOP);
   
//    WM_CreateTimer(WM_GetClientWindow(hWinMain), /* 接受信息的窗口的句柄 */
//                   ID_TimerTime,                  /* 用户定义的Id。如果不对同一窗口使用多个定时器,此值可以设置为零。 */
//                   20,                           /* 周期,此周期过后指定窗口应收到消息*/
//                   0);                             /* 留待将来使用,应为0 */
    WM_SetFocus(hWinICON);                  // 加了这句后系统不正常   ??????????疑问
    while(1)
    {
        //GUI_Delay(10);
    }
}


ST 官方程序:

/*********************************************************************
*
*       Public routines
*
**********************************************************************
*/
/*********************************************************************
*
*       MainTask
*/
void MainTask(void);
void MainTask(void) {
  GUI_FONT Font;
  int i, Add, Sel, TimeNextInc;
  WM_HWIN hWin, hText;
  
  GUI_Init();
  #if (!defined(WIN32))
  if ((LCD_GetMirrorYEx(0) == 1) && (LCD_GetSwapXYEx(0) == 1) && (LCD_GetVXSizeEx(0) > LCD_GetXSizeEx(0))){
    GUI_SetOrg(320, 0); /* Temporarilly required, will be solved in future */
  }
  #endif
  WM_EnableMemdev(WM_HBKWIN);
  WM_SetCallback(WM_HBKWIN, _cbWin);
  /*
  * Create title of sample
  */
  hText = TEXT_CreateEx(0, 0, 320, 30, WM_HBKWIN, WM_CF_SHOW, 0, GUI_ID_TEXT0, "emWin ICONVIEW sample");
  TEXT_SetFont(hText, &GUI_Font24B_ASCII);
  TEXT_SetTextAlign(hText, GUI_TA_HCENTER | GUI_TA_VCENTER);
  TEXT_SetTextColor(hText, 0xFF4040);
  /*
  * Create explanation
  */
  hText = TEXT_CreateEx(160, 40, 140, 100, WM_HBKWIN, WM_CF_SHOW, 0, GUI_ID_TEXT1, "");
  GUI_SIF_CreateFont(_acFramed24B, &Font, GUI_SIF_TYPE_PROP_FRM);
  TEXT_SetFont(hText, &Font);
  TEXT_SetTextColor(hText, GUI_WHITE);
  TEXT_SetWrapMode(hText, GUI_WRAPMODE_WORD);
  TEXT_SetTextAlign(hText, GUI_TA_HCENTER | GUI_TA_VCENTER);
  /*
  * Create iconview widget
  */
  hWin = ICONVIEW_CreateEx(10, 30, 125 + 11, 200,
                           WM_HBKWIN, WM_CF_SHOW | WM_CF_HASTRANS,
                           ICONVIEW_CF_AUTOSCROLLBAR_V, GUI_ID_ICONVIEW0, 55, 60);
  for (i = 0; i < GUI_COUNTOF(_aBitmapItem); i++) {
    /*
    * Add icons to the widget
    */
    ICONVIEW_AddBitmapItem(hWin, _aBitmapItem.pBitmap, _aBitmapItem.pText);
  }
  ICONVIEW_SetBkColor(hWin, ICONVIEW_CI_SEL, GUI_BLUE | 0xC0000000);
  ICONVIEW_SetFont(hWin, &GUI_Font13B_ASCII);
  WM_SetFocus(hWin);                                                     // 必须增加此命令,不然不显示图标背影。??
  Add = 1;
  Sel = 0;
  TimeNextInc = GUI_GetTime() + 1000;
  while (1) {
    GUI_Delay(50);
    WM_SendMessageNoPara(WM_HBKWIN, MSG_MOVE); /* Message for moving the toucan */
    if (GUI_GetTime() >= TimeNextInc) {
      TimeNextInc += 1000;
      if (Sel == 0) {
        Add = 1;
      } else if (Sel == (GUI_COUNTOF(_aBitmapItem) - 1)) {
        Add = -1;
      }
      Sel += Add;
      ICONVIEW_SetSel(hWin, Sel);
    }
  }
}

/*************************** End of file ****************************/
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115692
QQ
发表于 2014-12-1 09:55:07 | 显示全部楼层
楼主多研究下,这个例子没印象了。帮顶
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2015-4-4 15:06:03 | 显示全部楼层
楼主,能把你移植后的程序发我一下吗,2488091@qq.com  谢谢
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-12 11:26 , Processed in 0.561472 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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