自绘的clistctrl,把字体设置大,结果字不能完全显示。然后把显示区域变大,发现刷新不正常:用户区都写满了,滚动条还不出来,后面写的内容都看不到了。感觉是由于windows以原来的行高算,觉得还没写满,所以没有滚动。
不知道我说清楚了没有。

解决方案 »

  1.   

    void CListCtrlEx::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
    {
        if (lpMeasureItemStruct->CtlType != ODT_LISTVIEW)
            return;

    TEXTMETRIC tm;
    CClientDC dc(this);
    CFont* pFont = GetFont();
    CFont* pOldFont = dc.SelectObject(pFont);
    dc.GetTextMetrics(&tm);
    int nItemHeight = tm.tmHeight + tm.tmExternalLeading; lpMeasureItemStruct->itemHeight = nItemHeight + 8; //or should I go for max(nItemheight+4, m_cxImage+2);
    dc.SelectObject(pOldFont);
    }
      

  2.   

    BEGIN_MESSAGE_MAP(CListTreeCtrl, CListCtrl)
    //{{AFX_MSG_MAP(CListTreeCtrl) ON_WM_MEASUREITEM_REFLECT() //}}AFX_MSG_MAP
    END_MESSAGE_MAP()
      

  3.   

    已经通过添加CImageList的方法解决。贴子关闭。