硬汉嵌入式论坛

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

[emWin] 新手调GUI笔记,更新中,可借鉴,可望批评指导

[复制链接]

13

主题

44

回帖

23

积分

初级会员

积分
23
发表于 2014-8-26 19:50:42 | 显示全部楼层 |阅读模式
2014-8-26  LISTVIEW控件篇
*************************
①LISTVIEW控件,表内显示必须每行每列对齐;
  对的例子
    static const char * _lvTable_00[4] ={"地址" , "编号" , "监测区域" , "状态","事件记录" };
    static const char * _lvTable_01[4] ={"" , "" , "" , "erwerwrw" };
    static const char * _lvTable_02[4] ={"" , "" , "" , "erwerwrw" };
    static const char * _lvTable_03[4] ={"" , "" , "" , "erwerwrw" };
  错的例子   
    static const char * _lvTable_00[4] ={"" , "" , "" , "你好" };
    static const char * _lvTable_01[4] ={"1"  };
    static const char * _lvTable_02[4] ={"2" , };
    static const char * _lvTable_03[4] ={"3" ,  };

②字体设置要合适否则显示不出来!
③非阻塞函数GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);
  与阻塞函数GUI_ExecDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);区别!
  要用非阻塞函数!
④网格可见LISTVIEW_SetGridVis(WM_GetDialogItem(hWin,GUI_ID_LISTVIEW0), 4);网格可见!!!
⑤LISTVIEW单个表格背景颜色应该放到最后设置 LISTVIEW_SetItemBkColor(WM_GetDialogItem(hWin,GUI_ID_LISTVIEW0), 1, 1, 0, GUI_RED);
⑥注意GUI版本,较低版本有的控件(或功能)没有添加!比如3.8才有LISTVIEW右边和下边的下拉条!


2014-8-27  LISTVIEW控件篇

***********************************************************************************
LISTVIEW——Header高度设置
**************************
static LISTVIEW_Handle _hListView;//···············创建(LISTVIEW控件)句柄变量①

_hListView = LISTVIEW_Create(10, 80, 300, 89, 0, 1234, WM_CF_SHOW, 0);//创建LISTVIEW控件句柄②

HEADER_Handle hHeader;//··················创建(LISTVIEW控件)Header句柄变量③
hHeader = LISTVIEW_GetHeader(_hListView);//··········创建(LISTVIEW控件)Header句柄④
WM_SetFocus(_hListView);//··························聚焦LISTVIEW控件⑤        

HEADER_SetHeight(hHeader,50);//·······················设置Header高度为50⑥
2014-8-28  LISTVIEW控件篇

  关键字:句柄、聚焦、网格可视、右滚动条、增加最上标题栏高度、外部按键切换窗口、
注意:1.没有用OS;2.若发现汉字跑偏,设置居左、居中试试可能管用!
WM_HWIN hItem;
    static LISTVIEW_Handle _hListView;
    HEADER_Handle hHeader;
    int i;
    switch (pMsg->MsgId)
    {
        case WM_INIT_DIALOG:

            // Initialization of 'Framewin2'
            hItem = pMsg->hWin;
            FRAMEWIN_SetText(hItem, "Screen 2");
            FRAMEWIN_SetFont(hItem, &GUI_Font24_1);
            /****对LISTVIEW设置****/
            _hListView = WM_GetDialogItem(pMsg->hWin, ID_LISTVIEW0);
            hHeader = LISTVIEW_GetHeader(_hListView);//句柄
            WM_SetFocus(_hListView);//聚焦            
            LISTVIEW_SetGridVis(_hListView, 5);//网格可视
            HEADER_SetTextColor(hHeader, GUI_BLUE);
            HEADER_SetFont(hHeader,&GUI_FontHZ16 );
            LISTVIEW_AddColumn(_hListView, 100, "编号", GUI_TA_LEFT);//增加列居左
            LISTVIEW_AddColumn(_hListView,  60, "标号", GUI_TA_LEFT);
            LISTVIEW_AddColumn(_hListView,  100, "区域",GUI_TA_LEFT);
           // HEADER_SetFont(hHeader,&GUI_FontHZ16 );

            SCROLLBAR_CreateAttached(_hListView, SCROLLBAR_CF_VERTICAL);//右滚动条
            HEADER_SetHeight(hHeader, 20);//增加最上标题栏高度
            for (i = 0; i < GUI_COUNTOF(_aTable_1); i++)
            {
                LISTVIEW_AddRow(_hListView, _aTable_1);
            }
            break;

          case WM_KEY:
                switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key)
                {
                   case GUI_KEY_BACKSPACE :
                      LISTVIEW_IncSel(_hListView);
                      Delay_WM_Exec(10);
                      break;
//                   case  GUI_KEY_ESCAPE :
//                      LISTVIEW_DecSel(_hListView);//加上标题栏汉字就不能正常显示!why?????
//                      Delay_WM_Exec(10);
                      break;

                    case  GUI_KEY_ENTER:
                       FRAMEWIN_Delete(pMsg->hWin);
                       GUI_CreateDialogBox(_aDialogCreate1, GUI_COUNTOF(_aDialogCreate1), _cbDialog1, WM_HBKWIN, 0, 0);
                        Delay_WM_Exec(10);      
                        break;

                }
                break;
        default:
        WM_DefaultProc(pMsg);
        break;
    }
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107197
QQ
发表于 2014-8-26 19:54:04 | 显示全部楼层
加精,非常感谢楼主分享经验。
回复

使用道具 举报

13

主题

44

回帖

23

积分

初级会员

积分
23
 楼主| 发表于 2014-8-27 15:46:25 | 显示全部楼层

回 eric2013 的帖子

eric2013:
加精,非常感谢楼主分享经验。
请问怎么单独改这里的字体?谢谢
QQ截图20140827154412.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107197
QQ
发表于 2014-8-27 21:22:26 | 显示全部楼层

回 mr.boy 的帖子

mr.boy:请问怎么单独改这里的字体?谢谢 (2014-08-27 15:46) 
有专门API的。
回复

使用道具 举报

13

主题

44

回帖

23

积分

初级会员

积分
23
 楼主| 发表于 2014-8-28 22:45:15 | 显示全部楼层

回 eric2013 的帖子

eric2013:加精,非常感谢楼主分享经验。 (2014-08-26 19:54) 
LISTVIEW_DecSel(_hListView);为什么加了这条就不好用了呢???谢谢~请见上边表红部分程序!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107197
QQ
发表于 2014-8-29 11:27:30 | 显示全部楼层

回 mr.boy 的帖子

mr.boy:LISTVIEW_DecSel(_hListView);为什么加了这条就不好用了呢???谢谢~请见上边表红部分程序! (2014-08-28 22:45) 
官方有个listview的例子的,你研究下,基本所有操作都用到了,你可以参考他们怎么实现的。
回复

使用道具 举报

13

主题

44

回帖

23

积分

初级会员

积分
23
 楼主| 发表于 2014-8-29 13:38:43 | 显示全部楼层

回 eric2013 的帖子

eric2013:官方有个listview的例子的,你研究下,基本所有操作都用到了,你可以参考他们怎么实现的。 (2014-08-29 11:27) 
[s:138]这个就是仿照官方写的!找到原因了,是因为调用了GUI定义的按键,改成自己定义按键就行了!!!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107197
QQ
发表于 2014-8-29 14:27:38 | 显示全部楼层

回 mr.boy 的帖子

mr.boy:[s:138]这个就是仿照官方写的!找到原因了,是因为调用了GUI定义的按键,改成自己定义按键就行了!!! (2014-08-29 13:38) 
不错。
回复

使用道具 举报

13

主题

87

回帖

126

积分

初级会员

积分
126
发表于 2014-8-29 16:21:52 | 显示全部楼层
楼主很强大
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-21 11:35 , Processed in 0.306520 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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