在列表中顯示大量資料時,比insertitem操作更快。
mfc基本對話方塊工程建立後,新增list_control控制項,並設定屬性(必須)
我這裡使用樣式為
為列表控制項新增變數(m_listcontrol)
參考各種帖子的做法,新增乙個繼承cobject的類,命名為clabelitem。
在clabelitem類中過載 操作符=,和建構函式。
為list_control新增訊息(lvn_getdispinfo)處理函式
訊息處理函式如
void cobj_show_extra_windowsdlg::onlvngetdispinfolistself(nmhdr *pnmhdr, lresult *presult)
}}
新增資料
updatedata(true);
// todo: 在此新增控制項通知處理程式**
char * pszcols=;
cstring strtext;
int i;
lvcolumn col;
col.mask= lvcf_text;
for(i=0; i<9; i++)
m_arlabels_self.removeall();
m_arlabels_self.setsize(1000, 2);
clabelitem label;
for(i=0; i<90; i++)
m_listcontrol_self.setitemcount(i);
m_listcontrol_self.invalidate();//通知列表資料已經準備好,可以更新顯示
(cpu:i7-7700k,ram:16g)
測試時,當列表只有兩列時,填充500行大約需要4ms。當列數增加9列,填充500行,時間到達30-40ms。明顯上公升。
MFC 虛擬列表控制項的使用方法
問題 軟體需要從網路上每次獲取乙個10000byte的資料報,並通過列表實時顯示出來。列表有兩列,除去表頭,有10000行。開始用mfc自帶的listctrl控制項,每次獲得10000個的資料顯示的時候重新整理需要很長時間,顯示很慢。解決方法 使用虛擬列表。具體步驟 1.將listctrl控制項的o...
列表使用詳解
建立列表 sample list a 1,a b 得到列表中的某乙個值 value start sample list 0 end value sample list 1 刪除列表的第乙個值 del sample list 0 在列表中插入乙個值 sample list 0 0 sample val...
虛擬列表控制項使用
visual studio net 2003 4 共 4 對本文的評價是有幫助 評價此主題 虛擬列表控制項指具有lvs ownerdata樣式的列表檢視 listview 控制項。該樣式啟用控制項來支援項數達到dword 預設的項數隻擴充套件到int 然而,該樣式的最大便利是可以使記憶體中一次只有乙...