硬汉嵌入式论坛

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

[emWin] 焦点在图标上怎么关闭对话框?

[复制链接]

22

主题

97

回帖

163

积分

初级会员

积分
163
发表于 2015-8-10 14:41:09 | 显示全部楼层 |阅读模式
我做了一个对话框,上面有图标,按键和一些动态数值,通过实体按键控制。
然后问题是我把初始焦点设置在按键上时,通过
case GUI_KEY_ESCAPE:
       GUI_EndDialog(hDlg,0);break;
可以把对话框关掉。
但把初始焦点设置在图标上时,焦点可以通过上下左右键可以在图标间切换,
但无法关闭对话框。
我想问的是,焦点在图标上时要怎样才能关闭对话框呢?
或者怎样实现图标和按键之间的焦点切换?
   
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2015-8-10 18:41:16 | 显示全部楼层
图标是怎么创建的,是用的ICONVIEW吗
回复

使用道具 举报

22

主题

97

回帖

163

积分

初级会员

积分
163
 楼主| 发表于 2015-8-11 09:25:05 | 显示全部楼层

回 eric2013 的帖子

eric2013:图标是怎么创建的,是用的ICONVIEW吗 (2015-08-10 18:41)
对啊
/******************************************************************************
                              具体ICO界面分布
******************************************************************************/
//测量界面
static const BITMAP_ITEM BitmapItemTabl[] =
{
    {&bmH_F_A_30x30, "HI-A"},
    {&bmL_F_A_30x30, "LO-A"},
    {&bmL_F_V_30x30, "LO-V"},
    {&bmL_F_S_30x30, "LO-S"},
};


        case WM_INIT_DIALOG:  //初始化
            //
            //初始化按钮
            //
            hItem = WM_GetDialogItem(pMsg->hWin, ID_PROGBAR_0);
            PROGBAR_SetBarColor(hItem, 0, GUI_GREEN);  //填充区为绿色
            PROGBAR_SetBarColor(hItem, 1, GUI_GRAY);  //非填充区为灰色
        
            hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);  //得到按钮句柄
            BUTTON_SetFont(hItem, &GUI_Fontgbkfont16);
            BUTTON_SetText(hItem, "保存");
            BUTTON_SetFocussable(WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0),1);
         
//            //
//            //初始化TEXT
//            //
            hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0);  //得到TEXT句柄
            TEXT_SetFont(hItem, GUI_FONT_32B_1);
            TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);  //居中对齐
            TEXT_SetTextColor(hItem, GUI_YELLOW);
            TEXT_SetText(hItem, "0");
        
            hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_1);  //得到TEXT句柄
          TEXT_SetFont(hItem, GUI_FONT_32B_1);
            TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);  //居中对齐
            TEXT_SetTextColor(hItem, GUI_YELLOW);
            TEXT_SetText(hItem, "%");
            
            hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_2);  //得到TEXT句柄
            TEXT_SetFont(hItem, GUI_FONT_D32);
            TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);  //居中对齐
            TEXT_SetTextColor(hItem, GUI_YELLOW);
            TEXT_SetText(hItem, "00.00");
            
            hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_3);  //得到TEXT句柄
          TEXT_SetFont(hItem, GUI_FONT_24_ASCII);
            TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);  //居中对齐
            TEXT_SetTextColor(hItem, GUI_YELLOW);
            TEXT_SetText(hItem, "m/s2");
            
            hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_4);  //得到TEXT句柄
            TEXT_SetFont(hItem, &GUI_Fontgbkfont16);
            TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);  //居中对齐
            TEXT_SetTextColor(hItem, GUI_WHITE);
        
            hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_5);  //得到TEXT句柄
            TEXT_SetFont(hItem, GUI_FONT_COMIC24B_ASCII);
            TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);  //居中对齐
            TEXT_SetTextColor(hItem, 0x0000ff00);
            TEXT_SetText(hItem, "No:00/08");
                //
                //设置ICO之间间距
                //
                                hIconview1 = ICONVIEW_CreateEx(255, 20,\\
                                  70, 240,\\
                                  WM_HBKWIN,\\
                                  WM_CF_SHOW | WM_CF_HASTRANS,\\
                                  0,\\
                                  ID_ICONVIEW_0,\\
                                  50, 50);
                //
                //循环显示ICO图标
                //
                for (i = 0;i < (GUI_COUNTOF(BitmapItemTabl));i++)
                {
                    ICONVIEW_AddBitmapItem(hIconview1, BitmapItemTabl.pBitmap,\\
                                                                                        BitmapItemTabl.pText);
                }

                //
                //设置ICO之间间距
                //
                //    ICONVIEW_SetSpace(hIconview, GUI_COORD_X, 30);  //设置图标横坐标间距
                ICONVIEW_SetSpace(hIconview1, GUI_COORD_Y, 1);  //设置图标纵坐标间距
                //
                //设置ICO相关参数
                //
                ICONVIEW_SetFont(hIconview1, &GUI_Font13_ASCII);  //设置ICO标题字体大小
                ICONVIEW_SetBkColor(hIconview1, ICONVIEW_CI_SEL, GUI_WHITE | 0x70000000);  //设置ICO选中光标颜色
                ICONVIEW_SetTextColor(hIconview1, ICONVIEW_CI_UNSEL, GUI_WHITE);  //未选中字体颜色
                ICONVIEW_SetTextColor(hIconview1, ICONVIEW_CI_SEL, GUI_YELLOW);  //选中字体颜色
                ICONVIEW_SetIconAlign(hIconview1, ICONVIEW_IA_VCENTER | ICONVIEW_IA_HCENTER);  //ICO对其方式
                //    ICONVIEW_SetSpace(hIconview, GUI_COORD_X, 30);  //设置图标横坐标间距
                //
                //显示选中光标
                //
//                STemWin_Get_ICOSel(&ico_sel, SYSTEM_LAYER_Measurement);//MainMenu Measurement
//                ICONVIEW_SetSel(hIconview1, ico_sel);  //默认选中第一项
//                WM_SetFocus(hIconview1);  //显示光标
   
            //
            //保存进度条句柄
            //
            break;
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2015-8-12 09:13:37 | 显示全部楼层
焦点切到ICONVIEW控件上面的话,的确是不好切到其它控件上面了。可以考虑用一个图标实现删除对话框功能。
回复

使用道具 举报

6

主题

32

回帖

6

积分

新手上路

积分
6
发表于 2015-8-12 12:12:45 | 显示全部楼层
请使用非阻塞式对话框。。。。
回复

使用道具 举报

22

主题

97

回帖

163

积分

初级会员

积分
163
 楼主| 发表于 2015-8-12 14:25:39 | 显示全部楼层

回 true_casey 的帖子

true_casey:请使用非阻塞式对话框。。。。 (2015-08-12 12:12)
因为某些原因,我必须用阻塞式的
回复

使用道具 举报

22

主题

97

回帖

163

积分

初级会员

积分
163
 楼主| 发表于 2015-8-12 14:31:43 | 显示全部楼层

回 eric2013 的帖子

eric2013:焦点切到ICONVIEW控件上面的话,的确是不好切到其它控件上面了。可以考虑用一个图标实现删除对话框功能。 (2015-08-12 09:13)
嗯嗯,我把图标换成BUTTON了,因为控件采用了换肤,它的颜色默认按下为蓝色,怎么修改它的颜色啊?好像按手册上修改不行,是不是换肤后不能换颜色啊?
回复

使用道具 举报

5

主题

69

回帖

5

积分

初级会员

积分
5
发表于 2015-8-12 17:01:07 | 显示全部楼层

回 crazymcu 的帖子

crazymcu:嗯嗯,我把图标换成BUTTON了,因为控件采用了换肤,它的颜色默认按下为蓝色,怎么修改它的颜色啊?好像按手册上修改不行,是不是换肤后不能换颜色啊? (2015-08-12 14:31) 
是的,设置皮肤效果不用默认的全局效果试试
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-16 19:39 , Processed in 0.044540 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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