MFC控制項 CListCtrl3

2021-05-22 22:33:48 字數 1829 閱讀 6644

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列...