怎样设置List  Control中某一行记录的字体为粗体,满足一定条件以后又能变成正常字体,就像outlook中新邮件以粗体显示,看了以后就变成正常字体

解决方案 »

  1.   

    在插入记录之前设置字体  
        CFont font;
        CFont* pFont = m_list.GetFont();
        pFont->GetLogFont(&logFont);
        logFont.lfWeight=FW_BLACK;     //字体宽度,默认600
        font.CreateFontIndirect(&logFont);
        m_list.SetFont(&font);    m_list.InsertItem(0,"fdfd")Value                  Weight 
    FW_DONTCARE               0 
    FW_THIN                   100 
    FW_EXTRALIGHT             200 
    FW_ULTRALIGHT             200 
    FW_LIGHT                  300 
    FW_NORMAL                 400 
    FW_REGULAR                400 
    FW_MEDIUM                 500 
    FW_SEMIBOLD               600 
    FW_DEMIBOLD               600 
    FW_BOLD                   700 
    FW_EXTRABOLD              800 
    FW_ULTRABOLD              800 
    FW_HEAVY                  900 
    FW_BLACK                  900 
      

  2.   

    应该是没有什么简便方法的,要不就自己封装一个LIST类
      

  3.   

    楼上的方法好象只能设置所有的字体,要使选中的字体改变,可以自己封装个CLISTCTRL类
      

  4.   

    设置LVS_OWNERDRAWFIXED风格,响应WM_DRAWITEM消息自绘;也可以通过响应NM_CUSTOMDRAW消息自绘。
      

  5.   

    楼上的方法好象只能设置所有的字体,我的意思是怎样使List  Control中某一行或几行记录的字体为粗体,其它行为正常字体,满足一定条件以后变成正常字体
      

  6.   

    楼上的理解是错误的。listview会给每个单元格发送一次NM_CUSTOMDRAW消息,每个消息的处理都是独立的。
      

  7.   

    没做过,但我看在NM_CUSTOMDRAW的响应函数,pNMCD中有HDC,有RECT,你取了单元格的内容,然后在RECT的范围内画,应该就可以了。