当前位置:网站首页>[MFC development (17)] advanced list control list control
[MFC development (17)] advanced list control list control
2022-07-01 08:41:00 【Demo. demo】
1. Introduce
ListCtrl Advanced list control is also a common control in our usual programming process , It generally involves report presentation 、 Record and display , Need to be ListCtrl Advanced list control . for example : Task manager , File list , And so on ListCtrl Advanced list control .


Introduction to common attributes :
Edit Lables Whether the node can be edited

View Used to set the style of advanced list controls , There are four styles

Icon: For each item Show large icons

Small Icon: For each item Show small icons

List: Displays a list of... With small icons item

Report: Show item Detailed information

2. Common methods
(1) First, add variables to the control

(2) Set extended style
// Get an extended style
DWORD style = m_listctrl.GetExtendedStyle();
// Add the style of gridline and the style selected in the whole row, and add a selection box in front
style |= LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT|LVS_EX_CHECKBOXES;
// Set extended style
m_listctrl.SetExtendedStyle(style);(3) Add columns
// Add columns ,0--- Serial number , The second parameter shows the content ,
// The third parameter shows the alignment , The fourth parameter is the width displayed in the header
m_listctrl.InsertColumn(0, _T(" First column "), LVCFMT_CENTER, 50);
m_listctrl.InsertColumn(1, _T(" Second column "), LVCFMT_CENTER, 50);
m_listctrl.InsertColumn(2, _T(" The third column "), LVCFMT_CENTER, 50);(4) Add lines and line contents
// Insert line contents
// Add to the end
m_listctrl.InsertItem(m_listctrl.GetItemCount(),_T(" first line "));
// You can set the contents of a row and a column , The parameters are row , Column , Text content
m_listctrl.SetItemText(0,0, _T("111"));
m_listctrl.SetItemText(0,1, _T("222"));
m_listctrl.SetItemText(0,2, _T("333"));
(5) Set to select a row and uncheck
Choose
void CMFC_Test1Dlg::OnBnClickedButton21()
{
// TODO: Add control notification handler code here
// Set highlight
m_listctrl.SetFocus();
// Set to select a row
m_listctrl.SetItemState(1, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
}Uncheck the selected
void CMFC_Test1Dlg::OnBnClickedButton24()
{
// TODO: Add control notification handler code here
m_listctrl.SetItemState(1,0, LVIS_SELECTED | LVIS_FOCUSED);
}
(6) Traverse every line in the control
void CMFC_Test1Dlg::OnBnClickedButton25()
{
// TODO: Add control notification handler code here
// First, get how many rows
int ncount = m_listctrl.GetItemCount();
// Go through every line
for (int i = 0; i < ncount; i++){
// Single acquisition i+1 First column of row 、 Second column 、 The third column
CString str1 = m_listctrl.GetItemText(i, 0);
CString str2 = m_listctrl.GetItemText(i, 1);
CString str3 = m_listctrl.GetItemText(i, 2);
}
}(7) Get the selected row
// Get the currently selected row
// First get the position
POSITION pos = m_listctrl.GetFirstSelectedItemPosition();
while (pos){
// Get the index of the selected row according to the position
int row_idx = m_listctrl.GetNextSelectedItem(pos);
CString str_idx;
str_idx.Format(_T("%d"), str_idx);
MessageBox(str_idx);
}(8) Get the row selected in the multiple check box
void CMFC_Test1Dlg::OnBnClickedButton26()
{
// TODO: Add control notification handler code here
// First, get how many rows
int ncount = m_listctrl.GetItemCount();
// Go through every line
for (int i = 0; i < ncount; i++){
BOOL bcheck = m_listctrl.GetCheck(i);
if (bcheck){
CString check_idx;
check_idx.Format(_T(" The first %d Line is checked "), i);
MessageBox(check_idx);
}
}
}
(9) Delete row
void CMFC_Test1Dlg::OnBnClickedButton27()
{
// TODO: Add control notification handler code here
// Delete a line
m_listctrl.DeleteItem(0);
// Delete all rows
m_listctrl.DeleteAllItems();
}Note that after deleting a row , The index of all remaining rows will change , For example, delete 0 That's ok , Then delete 1 The line has changed. 0 That's ok
(10) Edit the specified line text

It should be noted that you should make it editable , Need to set the control property clock Edit Labels by True
First, add two events , Start and end editing


void CMFC_Test1Dlg::OnLvnBeginlabeleditList2(NMHDR *pNMHDR, LRESULT *pResult)
{
NMLVDISPINFO *pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR);
// TODO: Add control notification handler code here
*pResult = 0;
}
void CMFC_Test1Dlg::OnLvnEndlabeleditList2(NMHDR *pNMHDR, LRESULT *pResult)
{
NMLVDISPINFO *pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR);
// TODO: Add control notification handler code here
// The three parameters are rows in turn , Column , Input content
m_listctrl.SetItemText(pDispInfo->item.iItem, pDispInfo->item.iSubItem, pDispInfo->item.pszText);
*pResult = 0;
}Note that you can only edit ( The index for 0 Of ) The first 1 Column text , Other columns cannot be edited .
边栏推荐
- Redis源码学习(29),压缩列表学习,ziplist.c(二)
- Insert mathematical formula in MD document and mathematical formula in typora
- 【华为机试真题详解】判断字符串子序列【2022 Q1 Q2 | 200分】
- 【C】 Summary of wrong questions in winter vacation
- win7 pyinstaller打包exe 后报错 DLL load failed while importing _socket:参数错误
- 串口转WIFI模块通信
- Guidelines and principles of did
- factory type_ Id:: create process resolution
- vscode自定义各个区域的颜色
- Screenshot tips
猜你喜欢
随机推荐
中断与其他函数共享变量、临界资源的保护
C语言指针的进阶(下)
[deep analysis of C language] - data storage in memory
Matlab [function derivation]
分享2022上半年我读过的7本书
毕业论文中word的使用1-代码域标公式
What is the material of 16MnDR, the minimum service temperature of 16MnDR, and the chemical composition of 16MnDR
Matlab tips (23) matrix analysis -- simulated annealing
Intelligent water supply system solution
15Mo3 German standard steel plate 15Mo3 chemical composition 15Mo3 mechanical property analysis of Wuyang Steel Works
1.jetson与摄像头的对接
Redis源码学习(29),压缩列表学习,ziplist.c(二)
Redis publish subscription
嵌入式工程师常见面试题2-MCU_STM32
Memory size end
VSYNC+三重缓存机制+Choreographer
AVL树的理解和实现
《单片机原理与应用》——并行IO口原理
MATLAB小技巧(16)矩阵特征向量特征值求解一致性验证--层次分析
Properties of 15MnNiNbDR low temperature vessel steel, Wugang 15MnNiDR and 15MnNiNbDR steel plates









