列表视图是通过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);
也没有做到这一点.
有任何想法吗?
米莎
解决方法 这可能对你有帮助.插入所有列和行后调用此函数.voID SizeAllColumns(CListCtrl& List){ CheaderCtrl* pheader = List.GetheaderCtrl(); ASSERT(pheader); if (pheader) { // Turn off redraw until the columns have all been resized List.SetRedraw(FALSE); for (int iCurrCol = 0; iCurrCol < pheader->GetItemCount(); iCurrCoL++) { List.SetColumnWIDth(iCurrCol,LVSCW_autoSIZE); int nCurrWIDth = List.GetColumnWIDth(iCurrCol); List.SetColumnWIDth(iCurrCol,LVSCW_autoSIZE_USEheader); int nColHdrWIDth = List.GetColumnWIDth(iCurrCol); List.SetColumnWIDth(iCurrCol,max(nCurrWIDth,nColHdrWIDth)); } // Now that sizing is finished,turn redraw back on and // invalIDate so that the control is repainted List.SetRedraw(TRUE); List.InvalIDate(); }}总结
以上是内存溢出为你收集整理的c – CListCtrl尽管有足够的空间显示省略号(仅限Win2008和Win7)全部内容,希望文章能够帮你解决c – CListCtrl尽管有足够的空间显示省略号(仅限Win2008和Win7)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)