首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CListCtrl将字体样式设置为粗体

CListCtrl将字体样式设置为粗体
EN

Stack Overflow用户
提问于 2015-07-06 12:21:35
回答 2查看 3.5K关注 0票数 5

我希望将CListCtrl控件的任何单元格的字体更改为粗体。有人能告诉我们如何为CList Ctrl做这件事吗?

我已经为CTreeCtrl这样做了,就像这样

代码语言:javascript
运行
复制
pTC->SetItemState(hItemCur, TVIS_BOLD, TVIS_BOLD);

对于CListCtrl,我们有类似的东西吗?

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-06 15:12:45

如果可以使用CMFCListCtrl (VS2008、SP1和up),则可以从它派生类并重写OnGetCellFont。然后返回粗体字体(您可以创建自己的字体或返回AFX_GLOBAL_DATA::fontBold):

代码语言:javascript
运行
复制
HFONT CMyListCtrl::OnGetCellFont( int nRow, int nColumn, DWORD dwData /*= 0*/ )
{
    if (UseBoldFont(/* params */))
    {
        return GetGlobalData()->fontBold;
    }
    return NULL;
}

如果您必须坚持使用普通的旧CListCtrl,最简单的方法是使用自定义绘图,在那里您可以根据自己的需要调整绘图过程。不要把它和业主抽签混为一谈,在那里你必须自己画。

这是一篇文章解释了在CListCtrl中使用自定义绘图的基本知识。

票数 3
EN

Stack Overflow用户

发布于 2015-07-07 06:27:03

添加

代码语言:javascript
运行
复制
ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnCustomdraw)

到你的信息地图上。

现在,您可以在此函数中任意修改项。在这里,您可以更改对齐、字体、背景色、文本颜色、.,还可以将项设置为粗体-> 示例。IMO的最佳方法是要么将指向结构、类的指针存储,要么只在控件中项的LPARAM中存储一个标志。这个函数适用于CListCtrl和CTreeCtrl。

下面是一个带有标志的示例:

代码语言:javascript
运行
复制
enum ColorFlags
{
    F_COLOR_BLACK = 0x1,
    F_COLOR_WHITE = 0x2
    //and more...
};

enum CustomColors
{
    COLOR_BLACK = RGB(0, 0, 0),
    COLOR_WHITE = RGB(255, 255, 255)
};

afx_msg
void CMyListCtrl::OnCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)
{
    NMLVCUSTOMDRAW *pDraw = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR);
    switch (pDraw->nmcd.dwDrawStage)
    {
        case CDDS_PREPAINT:
            *pResult = CDRF_NOTIFYITEMDRAW; //Do not forget this...
            break;
        case CDDS_ITEMPREPAINT:
        {
            switch (pDraw->nmcd.lItemlParam) //Extract color from flags
            {
                case F_COLOR_BLACK:
                {
                    pDraw->clrText = COLOR_BLACK;
                } break;
                case F_COLOR_WHITE:
                {
                    pDraw->clrText = COLOR_WHITE;
                } break;
                default:
                    break;
            } //switch
        } break;
    } //switch
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31245713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档