gpt4 book ai didi

c++ - 如何在函数运行时逐一显示列表项

转载 作者:太空宇宙 更新时间:2023-11-04 12:32:50 26 4
gpt4 key购买 nike

我的列表控件只有在功能停止时才会显示。我需要在函数运行时将列表控件项一项一项地显示出来。

另一个函数不断将值传递给 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);
}

最佳答案

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

然而,使用第二个线程可能有点矫枉过正。您可以调用 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);
}
}

关于c++ - 如何在函数运行时逐一显示列表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58007464/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com