CListCtrl使用技巧

2021-08-22 14:23:27 字數 3621 閱讀 5378

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

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;

}q131284: how to select a listview item programmatically

m_list.setextendedstyle(lvs_ex_subitemimages);

m_list.setitem(..); //具體引數請參考msdn

CListCtrl用法簡介及使用技巧

設定屬性 首先用資源編輯器拖放乙個listctrl控制項到對話方塊中。設定屬性。always show selection true 即便失去焦點依然高亮選擇 singleselection true 只允許選中一行 view report 報表方式,較常用 初始化 在對話方塊的oninitiald...

CListCtrl的簡單使用

1 向對話方塊中拖動乙個clistctrl控制項,修改其id,將view屬性修改為report 報表 2 為clistctrl增加變數 3 在initdialog函式中初始化clistctrl,需要設定clistctrl的style。m clistctrl.setextendedstyle lvs ...

CListCtrl 使用筆記

1.如何獲取和設定某一行的選中狀態?1 獲取選中狀態 int state listctrl.getitemstate item,lvis selected if state lvis selected else 2 設定選中狀態 取消選中 listctrl.setitemstate item,0,l...