首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在函数运行时逐个显示列表项

如何在函数运行时逐个显示列表项
EN

Stack Overflow用户
提问于 2019-09-19 17:05:17
回答 1查看 107关注 0票数 1

只有当功能停止时,我的列表控件项才会显示。我需要在函数运行时逐个展示列表控件项。

另一个函数不断地将值传递给HRESULT function(),直到数据处理完成。

代码语言:javascript
复制
//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);
}
EN

回答 1

Stack Overflow用户

发布于 2019-09-22 06:02:30

这是动画,它通常需要第二个线程来更新显示。

然而,使用第二个线程可能有些过分了。您可以调用SetTimer以固定的时间间隔更新窗口。然后捕获WM_TIMER消息,在OnTimer中完成OnTimer中的所有更新。完成动画后,调用KillTimer

示例:

代码语言:javascript
复制
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);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58007464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档