我正在使用C ++和MFC,我有一个ListBox绑定到一个变量,当我运行一个函数时,我将更新:
void CFileSelection::OnBnClickedFiletousb()
{
m_LogC.AddString(_T("Starting move to USB, Please Wait..."));
UpdateData(FALSE);
// Code to move files from disk to USB
m_LogC.AddString(_T("Move to USB Successful."));
}
但是,尽管使用了UpdateData,但ListBox在完成任务之前不会填充任何一个字符串。有没有办法让它在执行其余代码之前更新屏幕?
答案 0 :(得分:1)
更改列表框中的文本后使用此功能。您的问题是其他调用阻止了MessageThread,但您可以使用此强制进行更新。
void ProcessWindowMessages()
{
MSG msg;
while (::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) // let them see the message before we go into longer term wait
{
TranslateMessage(&msg); // translate it
DispatchMessage(&msg); // and let windows dispatch it to WinProc
}
}
或者您也可以致电
yourlistboxVariable->UpdateWindow();