Я использую CListCtrl для отображения некоторых элементов с значками в режиме ListView. В большинстве случаев в списке есть только один элемент с большим количеством места вправо, но в моей системе Win2008 (или Win7) он обрезает текст с помощью многоточия (например, «Танк» усечен до «Та ...») , Это не происходит со всеми данными (даже некоторые более длинные строки работают), но неоднократно с примером «Танк». Также в системе WinXP он отлично работает - всегда.CListCtrl показывает многоточие, несмотря на много места (только Win2008 и Win7)
Представление списка создается с помощью файла гс с
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);
Я вставив только один столбец, в следующем формате:
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);
не делать трюк либо.
Любые идеи?
Миха
Вы пытались вручную установить ширину столбца в методах InsertColumn() или SetColumnWidth(), чтобы увидеть, происходит ли что-то другое? – uesp
@uesp Да, никакого эффекта. Я даже попытался установить столбец шириной 0f 800, но ничего не изменилось (CString testHeader = "testHeader"; m_lstCtrl.InsertColumn (0, (LPCTSTR) testHeader, LVCFMT_LEFT, 800, 0);) – Micha
Какой стиль стиля вы инициализируете контроль? –