MFC可视化 列表控件的使用
1、应该加入头文件
#include <Atlbase.h>
2、示例
![MFC下列表控件的使用 - songxing10000 - 十一岁的加重](http://img9.ph.126.net/WZLWCdV5h3eE3urTPZovMQ==/6598249542632904149.jpg)
类向导给列表控件绑定变量m_list
DWORD
dwExStyle=LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE|LVS_EX_FLATSB;
m_list.ModifyStyle(0,LVS_REPORT|LVS_SINGLESEL|LVS_SHOWSELALWAYS);
m_list.SetExtendedStyle(dwExStyle);
m_list.InsertColumn(1,"性别",LVCFMT_LEFT,40);
m_list.InsertColumn(2,"年龄",LVCFMT_LEFT,40);
m_list.InsertColumn(3,"年级",LVCFMT_LEFT,40);
m_list.InsertItem(0,"张三");
m_list.InsertItem(1,"李四");
m_list.InsertItem(2,"王五");
CString str1,str2,str3;
str1="男";
str2="20";
str3="三年级";
m_list.SetItemText(0,1,str1);
m_list.SetItemText(0,2,str2);
m_list.SetItemText(0,3,str3);
LV_ITEM lvItem;
lvItem.mask=LVIF_TEXT;
lvItem.iSubItem=0;
lvItem.pszText="";
lvItem.mask=LVIF_TEXT;
lvItem.iSubItem=0;
lvItem.pszText="";
for(i=0; i<Rnumber; i++)
{
for(int j=0; j<Rnum[i]; j++)
{
lvItem.iItem=j;
str1=R[i][j].des_ip.c_str();
//MessageBox(str1);
str2=R[i][j].next_ip.c_str();
str3.Format("%d",R[i][j].jump_num);
m_list1.InsertItem(&lvItem);
m_list1.SetItemText(j,0,str1);
m_list1.SetItemText(j,1,str2);
m_list1.SetItemText(j,2,str3);
}
{
for(int j=0; j<Rnum[i]; j++)
{
lvItem.iItem=j;
str1=R[i][j].des_ip.c_str();
//MessageBox(str1);
str2=R[i][j].next_ip.c_str();
str3.Format("%d",R[i][j].jump_num);
m_list1.InsertItem(&lvItem);
m_list1.SetItemText(j,0,str1);
m_list1.SetItemText(j,1,str2);
m_list1.SetItemText(j,2,str3);
}
}
控件的及时更新
void CMy3Dlg::OnButton1() { // TODO: Add your control notification handler code here CString str; int sent=1; for(int i=0;i<8;i++) { sent++; str.Format("%d数据包发送完毕",sent); ((CListBox*)GetDlgItem(IDC_LIST1))->AddString(str); Sleep(1000); UpdateWindow(); ((CListBox*)GetDlgItem(IDC_LIST1))->ResetContent(); } }
想实现每隔1000ms显示添加的数据,但是每次都是要等到函数结束后才会更新。
在网上找到了答案。在延迟后面添加更新函数UpdateWindow();就可以了。