CListCtrl控制項使用方法總結

2021-08-10 19:52:31 字數 4242 閱讀 2062



clistctrl控制項使用方法總結

今天第一次用clistctrl控制項,遇到不少問題,查了許多資料,現將用到的一些東西總結如下:

以下未經說明,listctrl預設view 風格為report

相關類及處理函式

mfc:clistctrl類

sdk:以 「listview_」開頭的一些巨集。如 listview_insertcolumn

lvs_icon: 為每個item顯示大圖示

lvs_smallicon: 為每個item顯示小圖示

lvs_list: 顯示一列帶有小圖示的item

lvs_report: 顯示item詳細資料

直觀的理解:windows資源管理器,「檢視」標籤下的「大圖示,小圖示,列表,詳細資料」

long lstyle;

lstyle = getwindowlong(m_list.m_hwnd, gwl_style);//獲取當前視窗style

lstyle &= ~lvs_typemask; //清除顯示方式位

lstyle |= lvs_report; //設定style

setwindowlong(m_list.m_hwnd, gwl_style, lstyle);//設定style

dword dwstyle = m_list.getextendedstyle();

dwstyle |= lvs_ex_fullrowselect;//選中某行使整行高亮(只適用與report風格的listctrl)

dwstyle |= lvs_ex_gridlines;//網格線(只適用與report風格的listctrl)

dwstyle |= lvs_ex_checkboxes;//item前生成checkbox控制項

m_list.setextendedstyle(dwstyle); //設定擴充套件風格

注:listview的style請查閱msdn

m_list.insertcolumn( 0, "id", lvcfmt_left, 40 );//插入列

m_list.insertcolumn( 1, "name", lvcfmt_left, 50 );

int nrow = m_list.insertitem(0, 「11」);//插入行

m_list.setitemtext(nrow, 1, 「jacky」);//設定資料

選中style中的show selection always,或者在上面第2點中設定lvs_showselalways

int nindex = 0;

//選中

m_list.setitemstate(nindex, lvis_selected|lvis_focused, lvis_selected|lvis_focused);

//取消選中

m_list.setitemstate(nindex, 0, lvis_selected|lvis_focused);

m_list.setextendedstyle(lvs_ex_checkboxes);

cstring str;

for(int i=0; i

方法一:

cstring str;

for(int i=0; i方法二:

position pos = m_list.getfirstselecteditemposition();

if (pos == null)

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

else

}tchar szbuf[1024];

lvitem lvi;

lvi.iitem = nitemindex;

lvi.isubitem = 0;

lvi.mask = lvif_text;

lvi.psztext = szbuf;

lvi.cchtextmax = 1024;

m_list.getitem(&lvi);

關於得到設定item的狀態,還可以參考msdn文章

q173242: use masks to set/get item states in clistctrl

lvcolumn lvcol;

char  str[256];

int   ncolnum;

cstring  strcolumnname[4];//假如有4列

ncolnum = 0;

lvcol.mask = lvcf_text;

lvcol.psztext = str;

lvcol.cchtextmax = 256;

while(m_list.getcolumn(ncolnum, &lvcol))

m_list.ensurevisible(i, false);

int nheadnum = m_list.getheaderctrl()->getitemcount();

方法一:

while ( m_list.deletecolumn (0))

因為你刪除了第一列後,後面的列會依次向上移動。

方法二:

int ncolumns = 4;

for (int i=ncolumns-1; i>=0; i--)

m_list.deletecolumn (i);

新增listctrl控制項的nm_click訊息相應函式

void ctest6dlg::onclicklist1(nmhdr* pnmhdr, lresult* presult)

*/// 方法二:

/*nm_listview* pnmlistview = (nm_listview*)pnmhdr;

if(pnmlistview->iitem != -1)

*/*presult = 0;

}新增listctrl控制項的nm_click訊息相應函式

void ctest6dlg::onclicklist1(nmhdr* pnmhdr, lresult* presult)

*presult = 0;

}新增listctrl控制項的nm_rclick訊息相應函式

void ctest6dlg::onrclicklist1(nmhdr* pnmhdr, lresult* presult)

*presult = 0;

}新增listctrl控制項的lvn_itemchanged訊息相應函式

void ctest6dlg::onitemchangedlist1(nmhdr* pnmhdr, lresult* presult)

else if((pnmlistview->uoldstate & lvis_focused) == 0 &&

(pnmlistview->unewstate & lvis_focused) == lvis_focused)

if((pnmlistview->uoldstate & lvis_selected) == lvis_selected &&

(pnmlistview->unewstate & lvis_selected) == 0)

else if((pnmlistview->uoldstate & lvis_selected) == 0 &&

(pnmlistview->unewstate & lvis_selected) == lvis_selected)

*presult = 0;

}17. 改變選中行的顏色

首先是新增以下訊息

on_notify( nm_customdraw, idc_list1, ondrawcolorformylist )  //為改變顏色新增的訊息

再新增類成員函式,就ok了:

//改變 m_list 控制項單行的顏色

void cssdtdlg::ondrawcolorformylist( nmhdr *pnmhdr, lresult *presult )

else if ( cdds_itemprepaint == plvcd->nmcd.dwdrawstage )

else if ( (cdds_itemprepaint | cdds_subitem) == plvcd->nmcd.dwdrawstage )

else  //設定為黑色

//設定背景色

if( nitem%2 ==0 )

else

plvcd->clrtext = clrnewtextcolor;

plvcd->clrtextbk = clrnewbkcolor;

*presult = cdrf_dodefault;}}

html控制項使用方法!!!

1.建立按鈕 click me 2.段落 第一段第二段 3.輸入框 first name type 指出輸入框文字型別。name 指出該輸入框唯一的名字。以便在以後使用。4.get 與 post 的區別 get通常是值傳遞,如密碼 post是表單傳遞,action到乙個地方寫入資料庫。get 方法是...

VC LIST控制項使用方法

首先初始化list控制項 m list.insertcolumn 0,學號 lvcfmt center,50 m list.insertcolumn 1,姓名 lvcfmt left,75 m list.insertcolumn 2,數學 lvcfmt left,50 m list.insertco...

Android Gallery控制項使用方法詳解

我們今天給大家講的就是gallery控制項,這個控制項在android當中是非常重要的,我們今天就給大家介紹一下3d的gallery控制項是怎麼樣來實現的。下面我們就來直接看看 吧。1.擴充套件gallery public class galleryflow extends gallery publ...