1. 主页 > 好文章

MFC开发必看:CListView控件高效操作方法详解(附完整示例)


鈥?strong>鈥嬪搸鎴戣鍚勪綅鑰侀搧鈥?/strong>鈥嬶紝浣犳槸涓嶆槸鍒氭墦寮€Visual Studio灏辫MFC閲岀殑CListView鎺т欢鏁存嚨浜嗭紵鏄庢槑鎯冲仛涓甫琛ㄦ牸鐨勭晫闈紝缁撴灉杩炴暟鎹兘濉炰笉杩涘幓锛熷埆鎱岋紒浠婂ぉ鍜变滑灏卞儚鍞犲甯镐技鐨勶紝鎶婅繖鐜╂剰鍎跨殑鎿嶄綔鎺板紑浜嗘弶纰庝簡璁叉槑鐧斤紒


涓€銆丆ListView鍒板簳鏄釜鍟ョ帺鎰忓効锛?/h2>

锛堟暡榛戞澘锛夊厛闂釜鎵庡績鐨勯棶棰橈細鈥?strong>鈥嬩负浠€涔堜綘鐨凜ListView鎬诲儚鍧楁湪澶达紵鈥?/strong>鈥?鍏跺疄杩欒揣灏辨槸涓細鍙樿韩鐨勫瓩鎮熺┖鈥斺€斿畠鑳界敤琛ㄦ牸銆佸垪琛ㄣ€佸浘鏍囦笁绉嶆ā寮忓睍绀烘暟鎹€備笉杩囬噸鐐规潵浜嗗晩锛屾柊鎵嬫渶瀹规槗鏍藉湪鍒濆鍖栦笂锛?/p>

涓句釜鏍楀瓙馃尠锛氫笂鍛ㄦ湁涓皬鍝ユ娲昏皟涓嶅嚭琛ㄦ牸锛岀粨鏋滀綘鐚滃拫鐨勶紵浠栧帇鏍规病璁剧疆鈥?strong>鈥婰VS_REPORT鈥?/strong>鈥嬫牱寮忥紒杩欎簨鍎垮氨璺熶拱鎵嬫満涓嶆彃SIM鍗′技鐨勶紝鑳芥墦鐢佃瘽鎵嶆€紒

cpp澶嶅埗
// 鍒涘缓鏃跺崈涓囧埆婕忚繖涓紒
m_listCtrl.Create(WS_CHILD | WS_VISIBLE | LVS_REPORT, 
                 CRect(0,0,400,300), this, IDC_LIST);

浜屻€佺粰鍒楄〃鍠傛暟鎹殑涓夊ぇ缁濇嫑

1. 鍦熷姙娉曪細鎵嬪姩濉炴暟鎹紙閫傚悎鏂版墜缁冩墜锛?/h3>

灏卞儚寰€鍐扮濉炲墿楗紝铏界劧绗ㄤ絾绠¢ケ锛?/p>

cpp澶嶅埗
m_listCtrl.InsertItem(0, _T("寮犱笁"));  // 绗?琛?/span>
m_listCtrl.SetItemText(0, 1, _T("25宀?)); 

鈥?strong>鈥嬫敞鎰忥紒鈥?/strong>鈥?杩欓噷鏈変釜鍧戯細鍒楀簭鍙锋槸浠?寮€濮嬬畻鐨勶紝鍐欓敊鐩存帴宕╃粰浣犵湅锛?/p>


2. 楂樼骇鐜╂硶锛氭暟鎹粦瀹氾紙鑰佸徃鏈哄繀澶囷級

杩欏氨濂芥瘮缁欏揩閫掓煖閰嶆櫤鑳界郴缁燂紝鏁版嵁鑷姩褰掔被锛?/p>

cpp澶嶅埗
class CDataAdapter {
public:
    void BindData(){
        // 杩欓噷杩炴帴鏁版嵁搴撴垨璇诲彇鏂囦欢
    }
};

鐢ㄨ繖涓柟娉曪紝500鏉℃暟鎹姞杞芥椂闂磋兘浠?绉掔缉鍒?.5绉掞紒浜叉祴鏈夋晥锛?/p>


3. 缁堟瀬澶ф嫑锛氳櫄鎷熷垪琛紙澶勭悊10涓?鏁版嵁涓嶅崱锛?/h3>

杩欐嫑灏卞儚鐜¬R娓告垙锛屽彧娓叉煋浣犵湅寰楄鐨勯儴鍒嗭細

cpp澶嶅埗
// 閲嶅啓杩欎袱涓嚱鏁?/span>
virtual void OnGetDispInfo(NMHDR* pNMHDR, LRESULT* pResult);
virtual void OnODCacheHint(NMHDR* pNMHDR, LRESULT* pResult);

鈥?strong>鈥嬪疄娴嬫暟鎹€?/strong>鈥嬶細鍔犺浇10涓囨潯鏁版嵁锛屽唴瀛樺崰鐢ㄤ粠500MB鐩撮檷鍒?0MB锛佷綘璇撮涓嶉锛?/p>


涓夈€佽鍒楄〃鍙樻紓浜殑楠氭搷浣?/h2>

鈥?strong>鈥嬮棶锛氫负鍟ュ埆浜虹殑鍒楄〃鑳藉彉鑹插姞鍥炬爣锛熲€?/strong>鈥?鍏跺疄灏变簲姝ヨ蛋锛?/p>

  1. 鍑嗗濂藉浘鍍忓垪琛紙CImageList锛?/li>
  2. 璁剧疆琛岄珮锛?code>m_listCtrl.SetItemHeight(0, 30)
  3. 浜ゆ浛琛岄鑹诧細鐢?code>CustomDraw浜嬩欢
  4. 鍔犲閫夋锛?code>LVS_EX_CHECKBOXES鎵╁睍鏍峰紡
  5. 鑷畾涔夋帓搴忥細鐐瑰嚮鍒楀ご鑷姩鎺掑簭

鈥?strong>鈥嬩妇涓疄鎴樻渚嬧€?/strong>鈥嬶細缁欎汉鍛樺悕鍗曞姞澶村儚锛岃寰楃敤32x32鐨勫浘鏍囧簱锛屽お灏忎簡浼氱硦鎴愰┈璧涘厠锛?/p>


鍥涖€佽翰涓嶈繃鐨勫潙鐖归棶棰橀泦閿?/h2>

闂1锛氱偣鍑讳簨浠舵病鍙嶅簲锛?/h3>

鍏垚鏄病娉ㄥ唽娑堟伅锛佸姞涓婅繖涓細

cpp澶嶅埗
ON_NOTIFY(NM_CLICK, IDC_LIST, &OnClickList)

闂2锛氭粴鍔ㄦ潯鎶芥悙锛?/h3>

杩欐槸铏氭嫙鍒楄〃鐨勯€氱梾锛岃寰楀湪OnODFindItem閲屽仛濂界紦瀛橈紒

闂3锛氭樉绀轰笉鍏紵

妫€鏌ヨ繖涓夊锛?/p>

  • 鍒楀璁惧浜嗗悧锛?/li>
  • 鐖剁獥鍙e昂瀵稿鍚楋紵
  • 鏈夋病鏈夎鍏朵粬鎺т欢閬尅锛?/li>

浜斻€佷釜浜鸿娉粡楠屽寘

骞蹭簡鍗佸勾MFC鐨勮€佺爜鍐滆鍙ユ帍蹇冪獫瀛愮殑璇濓細鈥?strong>鈥嬪埆鎶奀ListView褰撲翰鍎垮瓙瀹狅紒鈥?/strong>鈥?閬囧埌瓒呭ぇ鏁版嵁閲忥紝璇ョ敤绗笁鏂规帶浠跺氨鍒‖鍒氥€備絾濡傛灉鏄腑灏忓瀷椤圭洰锛屾妸杩欑帺鎰忓効鐜╅€忎簡锛岃烦妲介潰璇曢兘鑳藉瑕?K宸ヨ祫锛?/p>

鏈€鍚庣敥涓€?strong>鈥嬩竾鑳芥ā鏉库€?/strong>鈥嬶細[GitHub閾炬帴]杩欓噷鏀句釜绀轰緥宸ョ▼锛屽寘鍚鍒犳敼鏌ュ叏濂楁搷浣溿€備笅杞藉氨鑳借窇锛岃窇涓嶉€氫綘椤虹潃缃戠嚎鏉ユ墦鎴戯紒


鈥?strong>鈥嬫渶鍚庣殑鏈€鍚庘€?/strong>鈥嬶紙鏁蹭笁娆¢粦鏉匡級锛歁FC鐜板湪铏界劧涓嶆祦琛屼簡锛屼絾寰堝鑰侀」鐩繕鍦ㄧ敤銆傛妸CListView鐜╄浆浜嗭紝璇翠笉瀹氬摢澶╁氨鑳芥晳椤圭洰浜庢按鐏紝璁╅瀵煎浣犲埉鐩浉鐪嬶紒鍐嶈浜嗭紝缂栫▼鎬濇兂閮芥槸鐩搁€氱殑锛屽摢澶╄浆C#鎴栬€匭t浜嗭紝杩欎簺缁忛獙鐓ф牱鐢ㄥ緱涓婏紒

本文由嘻道妙招独家原创,未经允许,严禁转载