|
一、创建一个 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) 消息
五、声明容器 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会有响应,这是什么道理? |
上一篇: CRgn 如何实现两个窗口的并集,实现游戏窗口下一篇: VC工程Win10下控件尺寸和字体设置问题
|