CListCtrl 没有像 StaticText 那样立即显示文本
CListCtrl did not show text immediately like StaticText
我有这样的代码可以将安装日志写入静态文本和列表控件,并且我有一个按钮来启动由函数 OnClickInstallBtn()
处理的安装程序,但每次我调用 WriteLogtoScreen()
,只有静态文本发生变化,列表中不会显示任何内容,直到 OnClickInstallBtn()
完成并且该列表中的所有内容都显示在一个列表中。
如何让它像静态文本一样立即显示?
WriteLogtoScreen(LPCTSTR sLog)
{
int iItems;
iItems = m_ListLog.GetItemCount();
m_ListLog.InsertItem(iItems, sLog);
m_ListLog.Update(iItems);
m_ListLog.SetItemText(iItems, 0, sLog);
m_ListLog.Update(iItems);
UpdateData(FALSE);
SetDlgItemText(IDC_STATIC, sLog);
}
如果你想像这样明确地强制重绘你的列表,你应该调用 RedrawWindow()
:
void WriteLogtoScreen(LPCTSTR sLog)
{
int iItems;
iItems = m_ListLog.GetItemCount();
m_ListLog.InsertItem(iItems, sLog);
m_ListLog.Update(iItems);
m_ListLog.SetItemText(iItems, 0, sLog);
m_ListLog.Update(iItems);
UpdateData(FALSE);
//instant redraw
m_ListLog.RedrawWindow();
SetDlgItemText(IDC_STATIC, sLog);
}
我有这样的代码可以将安装日志写入静态文本和列表控件,并且我有一个按钮来启动由函数 OnClickInstallBtn()
处理的安装程序,但每次我调用 WriteLogtoScreen()
,只有静态文本发生变化,列表中不会显示任何内容,直到 OnClickInstallBtn()
完成并且该列表中的所有内容都显示在一个列表中。
如何让它像静态文本一样立即显示?
WriteLogtoScreen(LPCTSTR sLog)
{
int iItems;
iItems = m_ListLog.GetItemCount();
m_ListLog.InsertItem(iItems, sLog);
m_ListLog.Update(iItems);
m_ListLog.SetItemText(iItems, 0, sLog);
m_ListLog.Update(iItems);
UpdateData(FALSE);
SetDlgItemText(IDC_STATIC, sLog);
}
如果你想像这样明确地强制重绘你的列表,你应该调用 RedrawWindow()
:
void WriteLogtoScreen(LPCTSTR sLog)
{
int iItems;
iItems = m_ListLog.GetItemCount();
m_ListLog.InsertItem(iItems, sLog);
m_ListLog.Update(iItems);
m_ListLog.SetItemText(iItems, 0, sLog);
m_ListLog.Update(iItems);
UpdateData(FALSE);
//instant redraw
m_ListLog.RedrawWindow();
SetDlgItemText(IDC_STATIC, sLog);
}