for()
{
listctrl input item
}
//自动列宽
int nColumnCount = pList->GetHeaderCtrl()->GetItemCount();
for (int i = 0; i < nColumnCount; i++)
{
pList->SetColumnWidth(i, LVSCW_AUTOSIZE);
int nColumnWidth = pList->GetColumnWidth(i);
pList->SetColumnWidth(i, LVSCW_AUTOSIZE_USEHEADER);
int nHeaderWidth = pList->GetColumnWidth(i);
pList->SetColumnWidth(i, max(nColumnWidth, nHeaderWidth));
}通过调用以上代码,可以实现,listctrl的自动列宽。但是考虑到有时候数据量较大,需要利用listctrl的虚表,这跟上面所写的传统数据插入做法有异
此时,如果再调用上面的程序,就会卡住(估计死循环),即便写pList->SetColumnWidth(pItem->iSubItem, 100);
数据显示的速度又很慢,几乎是一列一列地赋值。因此,我想知道是否有什么方法,既可以实现自动列宽,又可以让数据快速显示呢,多谢!
{
listctrl input item
}
//自动列宽
int nColumnCount = pList->GetHeaderCtrl()->GetItemCount();
for (int i = 0; i < nColumnCount; i++)
{
pList->SetColumnWidth(i, LVSCW_AUTOSIZE);
int nColumnWidth = pList->GetColumnWidth(i);
pList->SetColumnWidth(i, LVSCW_AUTOSIZE_USEHEADER);
int nHeaderWidth = pList->GetColumnWidth(i);
pList->SetColumnWidth(i, max(nColumnWidth, nHeaderWidth));
}通过调用以上代码,可以实现,listctrl的自动列宽。但是考虑到有时候数据量较大,需要利用listctrl的虚表,这跟上面所写的传统数据插入做法有异
此时,如果再调用上面的程序,就会卡住(估计死循环),即便写pList->SetColumnWidth(pItem->iSubItem, 100);
数据显示的速度又很慢,几乎是一列一列地赋值。因此,我想知道是否有什么方法,既可以实现自动列宽,又可以让数据快速显示呢,多谢!
解决方案 »
- MFC怎么连接金山词霸接口?在线等。
- 请问一个简单的问题,线程可不可以动态接收参数
- 为啥全局的句柄没问题,改成结构的就10038了???
- 用SOCKET通讯中如何获取....
- 怎样比较两个文件夹是否相同?
- 求助关于“DIB”文件,哪位高手用过请讲解一下,不胜感激!(50分)
- 请问我在用右健单击一个文件时,在弹出的菜单中如何加入我自己的程序标题?????????
- 怎么样显示265色的或64*64的光标,online!
- mfc 调用 cmd
- MFC中如何 给TeeChart坐标轴 添加各个点的横坐标
- 一个计算图象数据大小的公式,有点看不懂,特来请教
- VB调用VC的dll崩溃,但在VC中调试dll时一切正常?
[email protected]
1、数据分页加载到ListCtrl中,不要一次性将全部数据插入到ListCtrl中,比如每页显示50条。
2、用变量保存每一列中各Item的最大宽度,每次Insert一个Item后先计算各SubItem的宽度,如果比原先的大则调整宽度,并记录此值。
{
list.SetRedraw(FALSE);
nCount=gethead.getcount;
while(nCount--)
AdjustColumn(nCount);
list.SetRedraw(TRUE);
}每次OnScroll时调用Refresh() 就OK 了