当前位置:网站首页>[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 .
边栏推荐
- NFT监管要点和海外政策
- Serial port to WiFi module communication
- C语言指针的进阶(下)
- Intelligent water and fertilizer integrated control system
- Computer tips
- Introduction to 18mnmo4-5 steel plate executive standard and delivery status of 18mnmo4-5 steel plate, European standard steel plate 18mnmo4-5 fixed rolling
- Guidelines and principles of did
- 【C】 Summary of wrong questions in winter vacation
- Redis publish subscription
- Audio audiorecord create (I)
猜你喜欢
随机推荐
NFT监管要点和海外政策
Matlab [function derivation]
SPL-安装与基本使用(二)
win7 pyinstaller打包exe 后报错 DLL load failed while importing _socket:参数错误
Advanced C language pointer (Part 2)
Internet of things technology is widely used to promote intelligent water automation management
2022 ordinary scaffolder (special type of construction work) examination question bank and the latest analysis of ordinary scaffolder (special type of construction work)
R语言观察日志(part24)--初始化设置
Intelligent water conservancy solution
Brief introduction to AES
Audio audiorecord create (I)
Pipeline detection of UAV Based on gazebo
Leetcode t39: combined sum
Do you know how data is stored? (C integer and floating point)
毕业论文中word的使用1-代码域标公式
MATLAB【函数求导】
What is 1cr0.5mo (H) material? 1cr0.5mo (H) tensile yield strength
Yolov3, 4, 5 and 6 Summary of target detection
The era of low threshold programmers is gone forever behind the sharp increase in the number of school recruitment for Internet companies
How to use OKR as the leadership framework of marketing department









