Я использую 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