Visual studio CListCtrl将字体样式设置为粗体

Visual studio CListCtrl将字体样式设置为粗体,visual-studio,visual-c++,mfc,clistctrl,Visual Studio,Visual C++,Mfc,Clistctrl,我想将CListCtrl控件的任何单元格的字体更改为粗体。有谁能告诉我如何使用clistctrl 我已经为CTreeCtrl这样做了 pTC->SetItemState(hItemCur, TVIS_BOLD, TVIS_BOLD); 我们有类似的CListCtrl吗 提前感谢。如果可以使用(VS2008 SP1及更高版本),可以从中派生类并重写。从那里返回粗体字体(您可以创建自己的字体或返回AFX_GLOBAL_DATA::fontBold): 如果您必须坚持使用普通的旧CListCt

我想将CListCtrl控件的任何单元格的字体更改为粗体。有谁能告诉我如何使用clistctrl

我已经为CTreeCtrl这样做了

pTC->SetItemState(hItemCur, TVIS_BOLD, TVIS_BOLD);
我们有类似的CListCtrl吗

提前感谢。

如果可以使用(VS2008 SP1及更高版本),可以从中派生类并重写。从那里返回粗体字体(您可以创建自己的字体或返回AFX_GLOBAL_DATA::fontBold):

如果您必须坚持使用普通的旧CListCtrl,最简单的方法是使用自定义绘图,您可以根据自己的需要调整绘图过程。不要将它与所有者绘制混淆,在所有者绘制中,您必须自己绘制所有图形

解释使用CListCtrl自定义绘图的基础知识。

Add

ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnCustomdraw)
到您的消息映射

现在,您可以在该函数中根据需要简单地修改项目。在这里,您可以更改对齐、字体、背景色、文本颜色,[…],并且可以将项目设置为粗体->。在IMO中,最好的方法是在控件中的项的LPRAM中存储指向结构、类的指针或只是一个标志。此函数适用于CListCtrl和CTreeCtrl。
下面是一个带有标志的示例:

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
}
枚举颜色标志
{
F_颜色_黑色=0x1,
F_颜色_白色=0x2
//还有更多。。。
};
枚举自定义颜色
{
黑色=RGB(0,0,0),
颜色\白色=RGB(255、255、255)
};
afx_味精
void CMyListCtrl::OnCustomdraw(NMHDR*pNMHDR,LRESULT*pResult)
{
NMLVCUSTOMDRAW*pDraw=重新解释铸件(pNMHDR);
开关(pDraw->nmcd.dwDrawStage)
{
案例CDDS_预涂:
*pResult=CDRF\u NOTIFYITEMDRAW;//不要忘记这个。。。
打破
案例CDDS\U项目预涂:
{
开关(pDraw->nmcd.lItemlParam)//从标志中提取颜色
{
外壳颜色为黑色:
{
pDraw->clrText=颜色\黑色;
}中断;
外壳颜色为白色:
{
pDraw->clrText=颜色\白色;
}中断;
违约:
打破
}//开关
}中断;
}//开关
}
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
}