MFC虛擬列表使用詳解

2021-09-03 03:00:15 字數 1179 閱讀 8881

在列表中顯示大量資料時,比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 然而,該樣式的最大便利是可以使記憶體中一次只有乙...