2013-05-22 4 views
0

내가 노력하고 있어요 :CListCtrl 열의 너비를 조정하여 각 열의 가장 긴 문자열에 맞게 조정하는 방법은 무엇입니까?

void MyListCtrl::UpdateWidthOfColumns(void) 
{ 

    int NofColumns = GetItemCount(); 
    for (int i = 0; i < NofColumns - 1 ; ++i) 
    { 
     SetColumnWidth(i, LVSCW_AUTOSIZE_USEHEADER); 
    } 
} 

결과 : 각 열의 폭이없는 가장 큰 문자열로, 그것은`헤더 문자열 크기로 조정됩니다.
내가 뭘 잘못하고있는거야?

답변

2

당신은이 일을하고 있습니다 :

SetColumnWidth(i, LVSCW_AUTOSIZE_USEHEADER); 

MSDN

LVSCW_AUTOSIZE_USEHEADER에 따르면 자동으로 헤더 텍스트에 맞게 열 크기.

당신은 가장 긴 문자열을 찾아, 각각의 칼럼을 통해 갈 필요가 :

CSize sz; 

for (/*for each column, go through each row*/) 
{ 
    sz = pDC->GetTextExtent(str); // get string size for each row 
    if (sz.cx > dx) 
     dx = sz.cx; 
} 

그런

// 가장 큰 문자열 열 너비를 설정합니다.

SetColumnWidth(dx); 
+0

이 문제를 해결할 수 있습니까? –

+0

@spin_eight 해결책을 편집했습니다. –