CListCtrl を使用して、ListView モードでアイコン付きのアイテムを表示しています。ほとんどの場合、リストには項目が 1 つしかなく、右側に十分なスペースがありますが、私の Win2008 システム (または Win7) では、省略記号を使用してテキストが切り捨てられます (たとえば、"Tank" は "Ta..." に切り捨てられます)。 . これはすべてのデータで発生するわけではありません (一部の長い文字列でも機能します) が、「タンク」の例では繰り返し発生します。また、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);
トリックもしなかった。
何か案は?
ミカ