硬汉嵌入式论坛

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

[emWin] EMWIN 中关于LISTVIEW 字体颜色问题

[复制链接]

4

主题

6

回帖

18

积分

新手上路

积分
18
发表于 2021-7-13 16:20:43 | 显示全部楼层 |阅读模式
大佬么,求助,现在在页面创建的LISVIEW空间,想实现在一个单元格小同时显示两种颜色的字体!!!

没有对应的API,然后看对应的设置字体颜色API源码搞不懂啊  【LISTVIEW_SetItemTextColor】。

求大神们帮解答

void LISTVIEW_SetItemTextColor(LISTVIEW_Handle hObj, unsigned Column, unsigned Row, unsigned int Index, GUI_COLOR Color) {
  LISTVIEW_Obj * pObj;
  LISTVIEW_CELL_INFO * pCellInfo;
  
  if (hObj) {
    WM_LOCK();
    pCellInfo = _GetpCellInfo(hObj, Column, Row, Index);
    if (pCellInfo) {
      pObj = LISTVIEW_LOCK_H(hObj);
      pCellInfo->aTextColor[Index] = Color;
      pCellInfo->Flags |= LISTVIEW_CELL_INFO_COLORS;
      LISTVIEW__InvalidateRow(hObj, pObj, Row);
      GUI_UNLOCK_H(pObj);
    }
    if (pCellInfo) {
      GUI_UNLOCK_H(pCellInfo);
    }
    WM_UNLOCK();
  }
}

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115812
QQ
发表于 2021-7-14 01:25:17 | 显示全部楼层
可以试试这个
QQ截图20210714012514.png
回复

使用道具 举报

4

主题

6

回帖

18

积分

新手上路

积分
18
 楼主| 发表于 2021-7-14 09:40:29 | 显示全部楼层

使用这个API后是不是所有的信息都要自己重绘啊
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115812
QQ
发表于 2021-7-14 09:50:15 | 显示全部楼层
工巨人 发表于 2021-7-14 09:40
使用这个API后是不是所有的信息都要自己重绘啊

可以仅重绘单元,
回复

使用道具 举报

15

主题

73

回帖

118

积分

初级会员

积分
118
发表于 2021-7-14 09:50:57 | 显示全部楼层
工巨人 发表于 2021-7-14 09:40
使用这个API后是不是所有的信息都要自己重绘啊

不全是,在回调里面获取item的text,font,然后绘制出来,效果是一样的,也不复杂,颜色的话自己加一点自定义的标志或者更好的处理数据结构之类的方法。关键是用这个api进行自绘可以实现很多自己想要的显示效果,灵活自由!!
回复

使用道具 举报

4

主题

6

回帖

18

积分

新手上路

积分
18
 楼主| 发表于 2021-7-14 10:31:13 | 显示全部楼层
WSTON 发表于 2021-7-14 09:50
不全是,在回调里面获取item的text,font,然后绘制出来,效果是一样的,也不复杂,颜色的话自己加一点自定 ...

我使用了这个之后处理HEAD头还有,其他每个单元的背景色包括TEXT都没有了。。。是不是还有啥没设置啊
回复

使用道具 举报

4

主题

6

回帖

18

积分

新手上路

积分
18
 楼主| 发表于 2021-7-14 10:34:25 | 显示全部楼层
WSTON 发表于 2021-7-14 09:50
不全是,在回调里面获取item的text,font,然后绘制出来,效果是一样的,也不复杂,颜色的话自己加一点自定 ...

static int LISTVIEW_cbButton(WIDGET_ITEM_DRAW_INFO * pDrawItemInfo)
{
    WM_HWIN  hWin;
        WM_HWIN  listview0_hWin = WM_GetDialogItem(hWin, GUI_ID_LISTVIEW0);

    int          i, Cmd = pDrawItemInfo->Cmd;
    hWin = pDrawItemInfo->hWin;

        switch(Cmd)
        {
                case WIDGET_ITEM_DRAW_BACKGROUND:
                        LISTVIEW_SetItemBkColor(listview0_hWin,pDrawItemInfo->Col, pDrawItemInfo->ItemIndex, LISTVIEW_CI_UNSEL, GUI_DEF_GRAY);
                        GUI_SetBkColor(GUI_BLACK);

                        break;
                case WIDGET_ITEM_DRAW:
                       
            //GUI_SetColor(GUI_DEF_GRAY);
                        break;

                default:
                        return LISTVIEW_OwnerDraw(pDrawItemInfo);
                       
        }
       
}
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-21 01:02 , Processed in 0.389367 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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