1、在线程里获取主对话框上编辑框中的内容,实现办法如下:
CString str;
CWnd* h_d = AfxGetApp()->GetMainWnd(); //获取主窗口的句柄
h_d->GetDlgItem(IDC_APOETRY_EDIT)->GetWindowText(str); //IDC_APOETRY_EDIT为编辑框的ID
记住:AfxGetApp()->GetMainWnd()取得的是主窗口句柄,无论在哪个线程里调用都是没有问题的,因为它先取得主线程句柄,再取得主线程的活动窗口。
2、MFC在多线程中获取编辑框内容
char a[260];
GetDlgItemText(AfxGetMainWnd()->m_hWnd,IDC_EDIT1,a,260); //对话框,控件id,从控件文本框读
AfxMessageBox(a);
SetDlgItemText(AfxGetMainWnd()->m_hWnd, IDC_TIME, a); //对话框,控件id,向控件文本框写
3、AfxGetMainWnd()为什么返回NULL
通常认为AfxGetMainWnd()会返回主窗口的指针。实际上有“前提条件”的。即返回当前调用AfxGetMainWnd()的线程的主窗口指针。
如果在程序的主线程中调用AfxGetMainWnd(),则返回程序(主线程)的主窗口指针。
如果在辅助线程(CreateThread)中调用AfxGetMainWnd(),则返回辅助线程的窗口指针,如果辅助线程没有创建窗口,则返回NULL。
要想在线程中使用主窗口的HWND值,解决方法:
(1)可以把主窗口的HWND值传给线程。
(2)可以用AfxGetApp()先取得主线程,再通过CWinThread的类成员m_pMainWnd获得主窗口 (AfxGetApp()->m_pMainWnd->m_hWnd)。
4、线程函数 访问 窗口类的按钮响应函数
参考链接
http://www.xuebuyuan.com/280607.html
http://www.vcchar.com/thread-1776-1-1.html
https://blog.csdn.net/ghost5216/article/details/47802737
https://www.cnblogs.com/zhuxuekui/p/3653297.html?utm_source=tuicool&utm_medium=referral