問題:軟體需要從網路上每次獲取乙個10000byte的資料報,並通過列表實時顯示出來。列表有兩列,除去表頭,有10000行。開始用mfc自帶的listctrl控制項,每次獲得10000個的資料顯示的時候重新整理需要很長時間,顯示很慢。
解決方法:使用虛擬列表。
具體步驟:
1.將listctrl控制項的ownerdata屬性從預設的false改為true;(我的理解是為true的話,資料由系統維護而不是列表控制項維護,不理解這個也不影響後面的程序);
2.定義乙個全域性的cstring[10000]的陣列,當接收資料執行緒收到一包資料之後,將資料格式化為字串存入該陣列;
3.為listctrl控制項新增乙個clistctrl類的變數m_list_fbg;
4.為listctrl控制項新增訊息lvn_getdispinfo
5.編輯lvn_getdispinfo訊息響應函式
void cdialogfirstpage::onlvngetdispinfolist(nmhdr *pnmhdr, lresult *presult)
}m_list_fbg.setitemcountex(10000);
m_list_fbg.invalidate();//此處表示每更新一行,就把列表設為無效,然後列表就會重繪,可以根據顯示的要求,將這句放在定時器的響應函式裡響應
}5.問題成功解決,顯示很流暢。
MFC控制項的使用方法
ddx control的含義 mfc有所謂的資料交換和資料檢驗 ddx ddv ddx dialog data exchange 將對話方塊中的控制項對應到類的成員變數上,可以令控制項的內容一有改變就自動傳送到變數去,還可以借mfc提供的ddv設定欄位的合理範圍。如果對變數內容有任何 確認規則 的話...
列表視控制項的使用方法
l 列表視 控制項list view 控制項也稱列表控制項,在需要以報表形式顯示資料時,列表視控制項是最好的選擇。區別於列表框,列表視控制項可顯示由多個子項組成的專案,並允許以多種方式顯示資訊。列表視控制項還可以為顯示的專案增加乙個圖示,但代表專案的圖示必須存 儲在乙個影象列表中。l 列表視控制項包...
MFC中Tab控制項的使用方法
1 首先建立乙個mfc對話方塊框架,在對話方塊資源上從工具箱中新增上乙個tab control 控制項,根據需要修改一下屬性,然後右擊控制項,為這個控制項新增乙個變數,將此控制項跟乙個ctabctrl類變數繫結在一起,這裡設為m tabctrl 2 建立兩個新的對話方塊資源,其屬性作如下修改 bor...