1)在主線程中完成修改
::SetDlgItemText(::AfxGetMainWnd()->m_hWnd,IDC_EDIT1,strNumberCh1);//輸入參數爲CString。
AfxGetMainWnd獲得窗口句柄。
(2)在子線程中完成修改
查閱網上資料,不能直接調用SetDlgItemText,原因未知。應向窗口類中發消息,在窗口類的消息響應函數
中添加SetDlgItemText相關代碼。核心代碼如下:
#define WM_ALLCH1 WM_USER+1 //自定義消息
::PostMessage(::AfxGetApp()->m_pMainWnd->m_hWnd,WM_ALLCH1,0,0 ); //通過AfxGetApp獲取窗口句柄
LRESULT OnFunc1(WPARAM wParam,LPARAM lParam);
...
ON_MESSAGE(WM_ALLCH1,OnFunc1)
. . .
LRESULT CMyDlg::OnFunc1(WPARAM wParam,LPARAM lParam) {}
/////////////////////////////////////////////////////////////
AfxGetMainWnd()得到的是當前線程的主窗口(如果有的話),因爲主窗口是屬於主線程的,所以想得到主窗口HWND值,
只能在主線程中用AfxGetMainWnd(),但要不是處在主線程中,AfxGetMainWnd()是從當前線程查詢主窗口的。但好像
AfxGetMainWnd()不能跨線程,要想在線程中使用主窗口的HWND值,可以把主窗口的HWND值傳給線程.也
可以用AfxGetApp()先取得主線程,再通過CWinThread的類成員m_pMainWnd獲得主窗口(AfxGetApp()->m_pMainWnd->m_hWnd)