从SQL SERVER中读取数据,然后插入到列表控件中,当数据太多时,界面几乎处于停顿状态,如何解决这个有关问题呢
从SQL SERVER中读取数据,然后插入到列表控件中,当数据太多时,界面几乎处于停顿状态,怎么解决这个问题呢?
我要从从SQL SERVER中读取数据,检索数据时是检索一个时间段中间的数据,然后插入到对话框中的列表控件中。当记录很多,超过1万条时,在往控件中插入时明显看到界面几乎处于停顿状态,连对话框都拖动不了了。只有等上几秒钟,等数据处理完,然后才能正常使用。
有没有什么办法解决这个问题,就是读取再多数据,也不影响界面的显示与使用?请高手给指点一下解决方案。
------解决方案--------------------
目前我知道虚拟表和ado分页两种方法,还在研究中
------解决方案--------------------
使用LVS_OWNERDATA窗口属性吧,无论多少记录都不受影响,不过代码稍微复杂一些
------解决方案--------------------
for (int i=0; i<num; i++)
{
// insert record[i] to listctrl
...
// 插入下面的消息循环将能保证界面继续响应
MSG msg;
while(::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if (msg.message == WM_QUIT)
{
TerminateThread(hThread,1);
PostQuitMessage(1);
break;
}
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
}
-_-b ****真#**(@#(..平空加这么多空格干吗??
我要从从SQL SERVER中读取数据,检索数据时是检索一个时间段中间的数据,然后插入到对话框中的列表控件中。当记录很多,超过1万条时,在往控件中插入时明显看到界面几乎处于停顿状态,连对话框都拖动不了了。只有等上几秒钟,等数据处理完,然后才能正常使用。
有没有什么办法解决这个问题,就是读取再多数据,也不影响界面的显示与使用?请高手给指点一下解决方案。
------解决方案--------------------
目前我知道虚拟表和ado分页两种方法,还在研究中
------解决方案--------------------
使用LVS_OWNERDATA窗口属性吧,无论多少记录都不受影响,不过代码稍微复杂一些
------解决方案--------------------
for (int i=0; i<num; i++)
{
// insert record[i] to listctrl
...
// 插入下面的消息循环将能保证界面继续响应
MSG msg;
while(::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if (msg.message == WM_QUIT)
{
TerminateThread(hThread,1);
PostQuitMessage(1);
break;
}
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
}
-_-b ****真#**(@#(..平空加这么多空格干吗??