2014-07-23 33 views
0

我使用C++用MFC,我有一個列表框綁到我更新,因爲我通過一個函數運行變量:強制列表框,以更新

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不會填充任何字符串。有沒有辦法在執行其餘代碼之前使其更新屏幕?

回答

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(); 
+0

這固定它的權利,謝謝! – user3215251