当前位置:网站首页>[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 .
边栏推荐
- [JS reverse] MD5 encryption parameter cracking
- Leetcode t39: combined sum
- 15Mo3 German standard steel plate 15Mo3 chemical composition 15Mo3 mechanical property analysis of Wuyang Steel Works
- leetcode T31:下一排列
- Foundation: 3 Opencv getting started images and videos
- TypeError: __ init__ () got an unexpected keyword argument ‘autocompletion‘
- V79.01 Hongmeng kernel source code analysis (user mode locking) | how to use the fast lock futex (Part 1) | hundreds of blogs analyze the openharmony source code
- MATLAB小技巧(16)矩阵特征向量特征值求解一致性验证--层次分析
- 避免按钮重复点击的小工具bimianchongfu.queren()
- There are many problems in sewage treatment, and the automatic control system of pump station is solved in this way
猜你喜欢

截图小妙招

C basic knowledge review (Part 4 of 4)

Advanced C language pointer (Part 2)

Computer tips

1. Connection between Jetson and camera

Memory size end
![Matlab [functions and images]](/img/8a/d2f68b5a7ed396ad20234c0aa24953.jpg)
Matlab [functions and images]

SPL installation and basic use (II)

factory type_ Id:: create process resolution

Principle and application of single chip microcomputer - principle of parallel IO port
随机推荐
Nacos - 配置管理
《单片机原理及应用》—定时器、串行通信和中断系统
Principle and application of single chip microcomputer - principle of parallel IO port
基础:3.opencv快速入门图像和视频
C basic knowledge review (Part 4 of 4)
用C语言编程:用公式计算:e≈1+1/1!+1/2! …+1/n!,精度为10-6
Configuration and startup of Chang'an chain synchronization node
2022 examination summary of quality controller civil engineering direction post skills (quality controller) and reexamination examination of quality controller civil engineering direction post skills
串口转WIFI模块通信
Introduction to 18mnmo4-5 steel plate executive standard and delivery status of 18mnmo4-5 steel plate, European standard steel plate 18mnmo4-5 fixed rolling
Model and view of QT
VSYNC+三重缓存机制+Choreographer
Advanced API
[深度剖析C语言] —— 数据在内存中的存储
Review of week 280 of leetcode
FreeRTOS学习简易笔记
C语言指针的进阶(上篇)
中小企业固定资产管理办法哪种好?
What is the material of 16mo3 steel plate? What is the difference between 16mo3 and Q345R?
Intelligent water and fertilizer integrated control system