clistctrl使用詳解
2023年04月07日 星期二 10:56 p.m.
如果設定了lvs_ex_checkboxes屬性,則可以用
bool getcheck( int nitem ) const;
來得到某一行是否checked。
可以先用下面的語句來刪除以前的東西:
for(int k=2;k>=0;k--) //注意要從後往前刪,否則出錯
m_listctrl.deletecolumn(k);
m_listctrl.deleteallitems();
用下面的語句新建列:
m_listctrl.insertcolumn(0,_t("檔名"),lvcfmt_image|lvcfmt_left);
m_listctrl.insertcolumn(1,_t("儀器類別"));
m_listctrl.insertcolumn(2,_t("專案類別"));
其中lvcfmt_image表示可以在第一列加入圖示。如果不要圖示可以刪去。
然後設定列寬:
for(j=0;j<3;j++)
m_listctrl.setcolumnwidth(j ,100);
以下為列表加入圖示,如果不需要圖示,可以跳過這一步。注意只在第一次加入,如果多次加入會出錯!
先在標頭檔案中加入宣告:
cimagelist m_imagelist;
這是必要的,如果在cpp的某個函式中加入由於生命期結束,cimagelist自動釋放,則效果是列表中看不到圖示,只看到乙個白方塊。
下面生成cimagelist,並將其繫結到clistctrl中,這是cimagelist中還沒有圖示,只是乙個容器:
static int flag=2;
if(flag==2)
flag=(flag+1)%2;
如果clistctrl已經用過,曾經加過圖示進去,這時就要刪除上次放進m_imagelist中的image
for(int kk=0;kk
下面介紹如何向clistctrl裡面加入行,並同時為每一行動態加入圖示:
假設m_listrowcount為要加入的行數。
cbitmap* bitmap;
bitmap=new cbitmap[m_list1rowcount];
hbitmap hbitmap;
for(int i = 0; i < m_listrowcount; i++)
else
bitmap[i].attach(hbitmap);
m_imagelist.add(&bitmap[i], rgb(0, 128, 128));
//插入行
m_listctrl.insertitem(i,m_filename,i);
m_listctrl.setitemtext(i,1,type);
m_listctrl.setitemtext(i,2,m_path);
}//記得刪除已經沒用的臨時檔案
if(m_list1rowcount!=0)
delete bitmap;
2。如果是icon型別的clistctrl,則要做一點點改動:
把繫結圖示集的**由
setimagelist(&m_imagelist,lvsil_small);
改為setimagelist(&m_imagelist,lvsil_normal);
插入行時只用
insertitem(i,mainset.m_filename,i);
不用setitemtext(i,1,type);
之類的**。
MFC之列表控制項CListCtrl
position ps m list.getfirstselecteditemposition int nsel m list.getnextselecteditem ps 選中的哪行的索引 based 0 或 if m list.getselectedcount 1 return int nsel...
MFC中的列表控制項CListCtrl
在使用clistctrl控制項report顯示風格時,需要設定列標題資訊,否則不能向控制項中新增資料資訊,編輯列標題需要 使用insertcolumn方法 m listctrl.insertcolumn 0,姓名 lvcfmt left,150,0 m listctrl.insertcolumn 1...
MFC中的CListCtrl控制項新增行
m list.attach getdlgitem this m hwnd,idc list1 m list.insertcolumn 0,t 工號 0,120 m list.insertcolumn 1,t 姓名 0,120 m list.insertitem 0,t 12901 插入第0行,且0列...