以下未經說明,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...