开通VIP,畅享免费电子书等14项超值服
首页
好书
留言交流
下载APP
联系客服
2017.03.30
1.工作者SendMessage让UI线程去更新界面2.不要把CWnd指针传递到线程中,而是把CWnd所对应的HWND窗口句柄传递进去,在线程内部,直接使用该句柄,使用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所对应的HWND窗口句柄传递进去,在线程内部,直接使用该句柄,使用windows API来更新界面,而不要在线程中用CWnd的方法来更新界面。因为MFC不是线程安全的。
微信登录中...请勿关闭此页面