MFC-GetMainWnd获取主窗口指针
Posted 天子骄龙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC-GetMainWnd获取主窗口指针相关的知识,希望对你有一定的参考价值。
CWinApp* pwin = AfxGetApp();//获取当前应用进程的指针 CWnd* pWnd = pwin->GetMainWnd();//获取主窗口指针 CGetMainWndDlg* pDlg = (CGetMainWndDlg*)pWnd; //主窗口指针转化成对话框类指针 pDlg->SetWindowText(_T("练习")); CWnd* pWnd1 = pWnd->GetDlgItem(IDC_BUTTON1);//获取按钮的句柄 pWnd1->SetWindowText(_T("获取进程指针"));
获取指向对话框表单的 CWnd 的指针
【中文标题】获取指向对话框表单的 CWnd 的指针【英文标题】:To get pointer to CWnd of dialog form 【发布时间】:2016-11-17 08:42:26 【问题描述】:我有以CSrvDlg
对话框形式作为主窗口的 MFC 应用程序:
BOOL CSrvApp::InitInstance()
CWinApp::InitInstance();
CSrvDlg SrvDlg;
...
INT_PTR nResponse = SrvDlg.DoModal();
我需要创建子对话框表单。但出于这个原因,我需要获取指向主窗体的CWnd
的指针,以传递构造函数参数,如指向父窗口的指针。如何获取指向我的SrvDlg
表单的CWnd
的指针?
【问题讨论】:
相信你已经从@S那里得到了答案。指田。但是你应该更详细地解释这一点。创建模态对话框后,在用户单击“确定/取消”之前,您无法从对话框外部执行任何操作。我不确定你打算用那个手柄做什么。 如果您像今天的 earlier question 所暗示的那样从主窗体创建子对话框,那么您将传递this
指针,因为 CDialog 是 CWnd。
【参考方案1】:
因为CSrvDlg是CWnd的子类,所以可以通过获取CWnd*指针
CWnd* ptr = &SrvDlg;
或明确
CWnd* ptr = static_cast<CWnd*>(&SrvDlg);
【讨论】:
以上是关于MFC-GetMainWnd获取主窗口指针的主要内容,如果未能解决你的问题,请参考以下文章