超级德道经 超级德道经
关注数: 1 粉丝数: 34 发帖数: 3,997 关注贴吧数: 0
MFC ListContorl Virtual List怎么用? 一、创建一个 MFC Dialog窗口 二、创建一个继承于ClistView类的MyListView 三、代码初始化 GetListCtrl().ModifyStyle(0, LVS_REPORT | LVS_SHOWSELALWAYS | LVS_SORTASCENDING); GetListCtrl().SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_OWNERDATA | LVS_EX_DOUBLEBUFFER | LVS_OWNERDRAWFIXED); GetListCtrl().InsertColumn(0, _T("数据1"), LVCFMT_LEFT, 70); GetListCtrl().InsertColumn(1, _T("数据2"), LVCFMT_LEFT, 180); GetListCtrl().InsertColumn(2, _T("数据3"), LVCFMT_LEFT, 350); GetListCtrl().InsertColumn(3, _T("数据4"), LVCFMT_LEFT, 100); GetListCtrl().SetBkColor(RGB(0, 0, 0)); 四、响应 ON_NOTIFY_REFLECT(LVN_GETDISPINFO, &CCpuListView::OnLvnGetdispinfo) ,这个消息是在MyListView中响应的 五、声明容器 vector<CPUASSEMBLEINFO> m_Cpulistdata; 六、给 m_Cpulistdata 压入数据: GetListCtrl().DeleteAllItems(); m_Cpulistdata.clear(); for (int i = 0; i < 100; i++)//先加入 1000个数据 { CPUASSEMBLEINFO cpuinfo; memcpy(cpuinfo.name, TEXT("1111111111"), sizeof(wchar_t) * wcslen(TEXT("1111111111"))); memcpy(cpuinfo.old, TEXT("2222222"), sizeof(wchar_t) * wcslen(TEXT("2222222"))); memcpy(cpuinfo.high, TEXT("33333333"), sizeof(wchar_t) * wcslen(TEXT("33333333"))); memcpy(cpuinfo.Annotation, TEXT("444444444"), sizeof(wchar_t) * wcslen(TEXT("444444444"))); m_Cpulistdata.push_back(cpuinfo); } GetListCtrl().SetItemCount(m_Cpulistdata.size());//当执行这个函数时就会发送 LVN_GETDISPINFO 这个消息。 GetListCtrl().Invalidate(); 七、运行以后,发现一个问题, LVN_GETDISPINFO 居然没有响应,这是为什么? 八、如果不创建MyListView类,而是在Dialog里面拉入ListContorl控件,再绑定一个对象m_List,这样的话LVN_GETDISPINFO会有响应,这是什么道理?
1 下一页