ListCtrl用法總結

2021-05-25 02:42:07 字數 1150 閱讀 5438

listctrl在工作中,常常用到,也常常看到大家發帖問怎麼用這個控制項,故總結了一下自己的使用經驗,以供參考使用。

先註明一下,這裡,我們用m_listctrl來表示乙個clistctrl的類物件,然後這裡我們的listctrl都是report形式,至於其他的如什麼大圖示,小圖示的暫時不講,畢竟report是大眾話的使用。其次,我們這裡用條款一,條款二來描述第一點,第二點,這個是參照《effective c++》的叫法,俺覺得這麼叫比較cool :)

條款一:設定listctrl的風格position pos = plist->getfirstselecteditemposition();

if (pos == null)

trace0("no items were selected!/n");

else

}條款十:刪除條款九中選中的行

這個相對前面九個條款是比較麻煩的,因為如果你要刪除多行的話,往往要出錯。比如,我現在要刪除第0行和第1行(列表的行序列是從0開始的)

那麼好啊。我來刪了

m_listctrl.deleteitem(0)

m_listctrl.deleteitem(1)

恭喜你,錯了,我好開心啊 :)

因為你刪除第0行以後,下面的行會往上移,那麼原來的第1行就變成了第0行,那麼你再 m_listctrl.deleteitem(1),那麼刪除的是原來的第2行,真麻煩,

所以,只有從下往上刪,才是安全的,先刪的,不會影響後面的操作,

m_listctrl.deleteitem(1)

m_listctrl.deleteitem(0)

但有時候,我們也不知道要刪除哪些行,只知道要刪除選中的那些行,像條款九中的那些

如果我們還是用

position pos = m_listctrl.getfirstselecteditemposition();

if (pos == null)

trace0("no items were selected!/n");

else

{while (pos)

{int nitem = m_listctrl.getnextselecteditem(pos);

m_listctrl.deleteitem(nitem );

關於listctrl的用法

插入列 行和列都是從0開始 m list.insertcolumn 0,執行時間 lvcfmt left 80 1 m list.insertcolumn 1,描述 lvcfmt left 80 1 m list.insertcolumn 2,程式路徑 lvcfmt left 150 1 m lis...

關於ListCtrl控制項的一些用法

本人從今天開始將陸續把自己在vc 中學到的點點滴滴記錄下來。最近正好在跟著導師做乙個軟體專案,要用到listctrl控制項。下面結合自己的程式設計經驗 其實我還是個菜鳥 介紹幾個listctrl控制項常用的方法。我選用的是報表形式 1 為listctrl 設定 線 m mylist.setexten...

報表風格的listctrl

報表風格的listctrl 說明 m list是clistctrl型別變數 long lstyle lstyle getwindowlong m list.m hwnd,gwl style 獲取當前視窗的風格 lstyle lvs typemask 清除顯示方式位 lstyle lstyle lvs...