只有当功能停止时,我的列表控件项才会显示。我需要在函数运行时逐个展示列表控件项。
另一个函数不断地将值传递给HRESULT function(),直到数据处理完成。
//function to show the list item
HRESULT function(datetime, strNumOfGroup, strDisributionRegion, strSpeed){
m_count = m_hyperTerminal.GetItemCount();
items = m_hyperTerminal.InsertItem(m_count, datetime);// Five columns in the list control
m_hyperTerminal.SetItemText(items, 1, strNumOfGroup);
m_hyperTerminal.SetItemText(items, 2, strCompactness);
m_hyperTerminal.SetItemText(items, 3, strDistributionRegion);
m_hyperTerminal.SetItemText(items, 4, strSpeed);
}发布于 2019-09-22 06:02:30
这是动画,它通常需要第二个线程来更新显示。
然而,使用第二个线程可能有些过分了。您可以调用SetTimer以固定的时间间隔更新窗口。然后捕获WM_TIMER消息,在OnTimer中完成OnTimer中的所有更新。完成动画后,调用KillTimer
示例:
BEGIN_MESSAGE_MAP(CMyDialog, CDialog)
...
ON_WM_TIMER()
END_MESSAGE_MAP()
BOOL CMyDialog::OnInitDialog()
{
BOOL res = CDialog::OnInitDialog();
...
SetTimer(1, 1000, NULL);
return res;
}
void CMyDialog::OnTimer(UINT_PTR nid)
{
CDialog::OnTimer(nid);
if(nid == 1)
{
static int n = 0;
if(n == 0) m_hyperTerminal.SetItemText(0, 1, L"strNumOfGroup");
if(n == 1) m_hyperTerminal.SetItemText(0, 2, L"strCompactness");
if(n == 2) m_hyperTerminal.SetItemText(0, 3, L"strDistributionRegion");
if(n == 3) m_hyperTerminal.SetItemText(0, 4, L"strSpeed");
n++;
if(n > 4)
KillTimer(1);
}
}https://stackoverflow.com/questions/58007464
复制相似问题