Я использую 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);
тоже не добился цели.
Есть идеи?
Миха