開通VIP,暢享免費電子書等14項超值服
首頁
好書
留言交流
下載APP
聯(lián)系客服
2017.03.30
1.工作者SendMessage讓UI線程去更新界面2.不要把CWnd指針傳遞到線程中,而是把CWnd所對應(yīng)的HWND窗口句柄傳遞進去,在線程內(nèi)部,直接使用該句柄,使用windows API來更新界面,而不要在線程中用CWnd的方法來更新界面。因為MFC不是線程安全的。請問老師,為什么不能用CWnd方法來更新界面。能詳細解釋下嗎?為什么我用//===================第1種在線程中更新界面的方式=================================HANDLE thread1=CreateThread(NULL,0,xianchen,m_hWnd,0,NULL); //傳入窗口句柄。m_hWnd//線程中的代碼CfeizuobiaoDlg * pp=(CfeizuobiaoDlg * )CWnd::FromHandle((HWND)canshu); //通過窗口句柄得到窗口的對象指針pp->GetDlgItem(IDC_EDIT4)->SetWindowTextW(_T("我是菜鳥?")); //通過窗口對象,更新界面//===================第2種在線程中更新界面的方式===================CWnd *hwnd = GetDlgItem(IDC_EDIT4); //得到控件句柄HANDLE thread1=CreateThread(NULL,0,xianchen,hwnd,0,NULL); //傳入得到的控件句柄。//線程中的代碼CWnd *pp=(CWnd*)canshu; //得到控件句柄。pp->SetWindowTextW(_T("我是菜鳥。")); //顯示//===================第3種在線程中更新界面的方式=========================HANDLE thread1=CreateThread(NULL,0,xianchen,this,0,NULL); //傳入當前窗口的對象。//線程中的代碼CfeizuobiaoDlg * pp=(CfeizuobiaoDlg * )canshu; //直接得到窗口的對象pp->GetDlgItem(IDC_EDIT4)->SetWindowTextW(_T("我是菜鳥!")); //顯示都可以成功更新的啊。
1.工作者SendMessage讓UI線程去更新界面2.不要把CWnd指針傳遞到線程中,而是把CWnd所對應(yīng)的HWND窗口句柄傳遞進去,在線程內(nèi)部,直接使用該句柄,使用windows API來更新界面,而不要在線程中用CWnd的方法來更新界面。因為MFC不是線程安全的。
微信登錄中...請勿關(guān)閉此頁面