CListCtrl показывает многоточие, несмотря на много места (только Win2008 и Win7)

Я использую CListCtrl для отображения некоторых элементов со значками в ListView Режим. В большинстве случаев в списке есть только один элемент с большим количеством места справа, но в моей системе Win2008 (или Win7) текст обрезается с помощью многоточия (например, «Tank» обрезается до «Ta ...») . Это происходит не со всеми данными (работают даже с некоторыми более длинными строками), но неоднократно с примером "Tank". Также в системе WinXP он работает нормально - всегда.

Представление списка создается с помощью rc-файла с

CONTROL  "List2",IDC_LIST,"SysListView32",LVS_LIST | WS_BORDER | WS_TABSTOP,320,27,195,38

, затем создается его экземпляр

myListCtrl.SubclassDlgItem( IDC_LIST, this );
myListCtrl.ModifyStyle(LVS_OWNERDRAWFIXED, LVS_SHAREIMAGELISTS | LVS_SINGLESEL | LVS_SHOWSELALWAYS);

ListView_SetBkColor(myListCtrl.m_hWnd,PMAINFRM->GetColor(IDCOLOR_LI_BKG));
ListView_SetTextBkColor(myListCtrl.m_hWnd,PMAINFRM->GetColor(IDCOLOR_LI_BKG));

myListCtrl.SetImageList(PMAINFRM->GetImageList(IDICO_16),LVSIL_NORMAL);
myListCtrl.SetImageList(PMAINFRM->GetImageList(IDICO_16),LVSIL_SMALL);

Я вставляю только 1 столбец со следующим форматом:

LV_COLUMN lvc;
lvc.mask = LVCF_FMT | LVCF_SUBITEM;
lvc.fmt = LVCFMT_LEFT;
lvc.iSubItem = 0;
myListCtrl.InsertColumn(0,&lvc);

И данные вставляются

int index = 0;
int nItem = m_lstClass.InsertItem(index,(LPTSTR) strLabel, iIconID));
myListCtrl.SetItemData( nItem, (DWORD)index);
myListCtrl.SetItemState( nItem, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED);

Я пробовал

myListCtrl.SetColumnWidth(column, LVSCW_AUTOSIZE_USEHEADER); 

, а также

myListCtrl.SetColumnWidth(column, LVSCW_AUTOSIZE); 

И

myListCtrl.SetExtendedStyle(LVS_EX_AUTOSIZECOLUMNS);

тоже не помогли.

Есть идеи?

Micha

5
задан Micha 9 March 2012 в 10:24
поделиться