CListCtrl: как получить ширину столбца при использовании разных шрифтов в одном столбце? - PullRequest
0 голосов
/ 04 декабря 2009

Я получил класс из CListCtrl с именем CListCtrlCustomDraw и использую обработчик 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));

для вычисления ширины столбца, в списке используется шрифт невыбранного элемента, который не такой широкий
как шрифт выбранного элемента (полужирный шрифт), поэтому там будет некоторое содержимое не может быть отображено в
выбранный элемент, даже если они имеют одинаковое содержание.

Можно ли использовать шрифт для расчета ширины столбца?
Я пытался установить шрифт перед указанными кодами, но эффекта нет.
Любой совет будет признателен.

1 Ответ

3 голосов
/ 04 декабря 2009

Вам нужно будет управлять шириной столбца вручную. Используйте GetTextExtentPoint32 , чтобы вычислить размер самой длинной строки в вашем самом крупном шрифте и таким образом установить ширину столбца.

...