0

CListCtrlCustomDrawというCListCtrlからクラスを派生させ、NM_CUSTOMDRAWハンドラーを使用してリストを描画しました。
問題は、選択されたアイテムと選択されていないアイテムのフォントが異なることです。これらはリストコントロールのメンバー変数ですが、

m_list.SetColumnWidth(iCol, LVSCW_AUTOSIZE); 
int nTextWidth = m_list.GetColumnWidth(iCol);
m_list.SetColumnWidth(iCol, LVSCW_AUTOSIZE_USEHEADER);
int nColTitleWidth = m_list.GetColumnWidth(iCol); 
m_list.SetColumnWidth(iCol,max(nTextWidth, nColTitleWidth));

列幅を計算するために、リストは選択されていないアイテムのフォントを使用します。これは、選択されたアイテムのフォント(太字フォント)ほど広くないため 、同じコンテンツであっても
、選択されたアイテムに表示できないコンテンツがあります。

列幅の計算にどのフォントを使用するように設定できますか?
上記のコードの前にフォントを設定しようとしましたが、効果がありません。
どんなアドバイスもいただければ幸いです。

4

1 に答える 1

3

列の幅を手動で管理する必要があります。GetTextExtentPoint32を使用して、最大のフォントで最長の文字列のサイズを計算し、そのように列幅を設定します。

于 2009-12-04T04:34:36.763 に答える