MFC 线程函数 读写 主对话框(主线程)的编辑框

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

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页