你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

emwin的listwheel怎么在设置画选中框

[复制链接]
bl2019 提问时间:2019-8-22 16:29 /
怎么在listwheel中画一个类似图2 的矩形框,我用
//GUI_SetColor(GUI_RED);
//GUI_DrawRect(9, 20, 160, 40);
画了一下,应该图层不对,画出来的矩形框在listwheel的下面,怎么才能滑到上面来了,GUI_DrawRect又不能设置图层句柄参数。不知道该怎么弄




1

1

2

2
收藏 评论9 发布时间:2019-8-22 16:29

举报

9个回答
tanic 回答时间:2019-8-23 09:23:56
可以用listview,自带选中行特效   
hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTVIEW_0);
                LISTVIEW_SetGridVis(hItem, 1);
                LISTVIEW_SetHeaderHeight(hItem, 20);
                LISTVIEW_SetRowHeight(hItem,20);
                LISTVIEW_SetGridVis(hItem,0);

                LISTVIEW_AddColumn(hItem, 100, "地址", GUI_TA_HCENTER | GUI_TA_VCENTER);
                LISTVIEW_AddColumn(hItem, 150, "检测类型", GUI_TA_HCENTER | GUI_TA_VCENTER);
                LISTVIEW_AddColumn(hItem, 90, "状态", GUI_TA_HCENTER | GUI_TA_VCENTER);   
                LISTVIEW_AddColumn(hItem, 90, "示值", GUI_TA_HCENTER | GUI_TA_VCENTER);
                LISTVIEW_AddColumn(hItem, 190, "描述", GUI_TA_HCENTER | GUI_TA_VCENTER);
                for(i=0;i<14;i++)
                {
                        LISTVIEW_AddRow(hItem, NULL);
                }
                LISTVIEW_SetSel(hItem,0);

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

bl2019 回答时间:2019-8-23 10:11:17
tanic 发表于 2019-8-23 09:23
可以用listview,自带选中行特效   
hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTVIEW_0);
                LISTVIEW ...

谢谢!我用的是listwheel不是listview。年月日时分秒不是固定值要能够任意搭配,用listview就要一个个写出来,工作量太大
tanic 回答时间:2019-8-23 10:33:09
试试这个   LISTWHEEL_SetSel  应该是选中额 LISTWHEEL_SetSel 这个能自动根据数据更新现实么。我之前不知道。
用的view+定时器自己刷新的。。。。
bl2019 回答时间:2019-8-23 14:28:54
tanic 发表于 2019-8-23 10:33
试试这个   LISTWHEEL_SetSel  应该是选中额 LISTWHEEL_SetSel 这个能自动根据数据更新现实么。我之前不知 ...

   LISTWHEEL_SetFont(listwheel, GUI_FONT_16B_ASCII);    LISTWHEEL_SetSel(listwheel, 2);  //设置第二行为选中行
    LISTWHEEL_SetTextAlign(listwheel, GUI_TA_HCENTER | GUI_TA_VCENTER);  //水平垂直居中
    LISTWHEEL_SetBkColor(listwheel, LISTWHEEL_CI_UNSEL, GUI_LIGHTGRAY);  //未选中背景色
    LISTWHEEL_SetBkColor(listwheel, LISTWHEEL_CI_SEL, GUI_LIGHTRED);  //选中背景色

这个是设置有多行的时候,以哪一行为选中行,我已经用了,具体效果如图1,但是在用户选择滑动的时候,是不能选中的,如图2

图1

图1

图2

图2
bl2019 回答时间:2019-8-23 17:01:34
好了,终于可以结贴了,经过一天的无所不用其极,突然发现 API 上有,直接照着画就行

//画选中线框
static int _OwnerDraw(const WIDGET_ITEM_DRAW_INFO * pDrawItemInfo) {
    switch (pDrawItemInfo->Cmd) {
        case WIDGET_DRAW_OVERLAY:
            GUI_SetColor(GUI_RED);
            GUI_DrawHLine(32, 0, 52);
            GUI_DrawHLine(48, 0, 52);
            break;
        default:
            return LISTWHEEL_OwnerDraw(pDrawItemInfo);
    }
    return 0;
}


LISTWHEEL_SetFont(listwheel, GUI_FONT_16B_ASCII);
    LISTWHEEL_SetSel(listwheel, 2);  //设置第二行为选中行
    LISTWHEEL_SetTextAlign(listwheel, GUI_TA_HCENTER | GUI_TA_VCENTER);  //水平垂直居中
    LISTWHEEL_SetBkColor(listwheel, LISTWHEEL_CI_UNSEL, GUI_LIGHTGRAY);  //未选中背景色
    LISTWHEEL_SetBkColor(listwheel, LISTWHEEL_CI_SEL, GUI_LIGHTRED);  //选中背景色
    LISTWHEEL_SetOwnerDraw(listwheel, _OwnerDraw);  //画选中框

:
@tanic 谢谢!

就是这样子吧

就是这样子吧
tanic 回答时间:2019-8-24 09:25:09
bl2019 发表于 2019-8-23 17:01
好了,终于可以结贴了,经过一天的无所不用其极,突然发现 API 上有,直接照着画就行

//画选中线框 ...

哈哈,其实很多很多功能都有API只不过文档不好,不知道罢了,每个API都试试
tanic 回答时间:2019-8-24 09:37:09
我之前做的是矩阵键盘操作,没有触摸的那种UI
bl2019 回答时间:2019-8-24 14:51:34
tanic 发表于 2019-8-24 09:37
我之前做的是矩阵键盘操作,没有触摸的那种UI

做出来之后给我说我们的屏幕不支持滑动
tanic 回答时间:2019-8-24 16:27:57
bl2019 发表于 2019-8-24 14:51
做出来之后给我说我们的屏幕不支持滑动

加个触摸就行了。。。

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版