我寫一個程式,想在執行緒中給一個編輯框不斷的加內容,當程式一直例外
例外是讀取位置0x134時產生沖突
CLOL_TestDlg *test;
UINT __cdecl ThreadProc(LPVOID lpParameter)
{
CString str;
for (int i = 0; i < 10; i++)
{
test->m_EditTest = str;
test->m_EditTest.Format(_T("%d") + str,i);
test->UpdateData(FALSE);
Sleep(1000);
}
return 0;
}
請朋友們幫忙看一下。
uj5u.com熱心網友回復:
執行緒中不能直接操作UI,在執行緒中PostMessage給主執行緒,由主執行緒處理uj5u.com熱心網友回復:
字串常量不能直接使用 + 來連接test->m_EditTest.Format(_T("%d") /*+ str*/,i);
uj5u.com熱心網友回復:
dlg對話框物件,要在每次使用的時候都重新獲的他的實體,你那個作為了全域變數就有問題,可以把dlg的實體作為執行緒函式的引數傳入uj5u.com熱心網友回復:
test->UpdateData(FALSE); 這句去掉自定義一個訊息
PostMessage 給 對話框
MyMessage()
{
// UpdateData();
}
uj5u.com熱心網友回復:
1樓和2樓的綜合起來就是正確答案轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/125112.html
標籤:基礎類
