一、需求
MFC界面有一个设置对话框,实际使用TabCtrl+子对话框的形式。在子对话框中设置参数时,需要将结果反馈至父窗口下方。这样统一信息输出。本文解决问题:如何在子窗口中,获取父窗口句柄,并在父窗口Static控件输出信息。
二、设计
对话框界面,主窗口为一TabCtrl,下方为一Static控件。过程省略。
三、编码
在子对话框头文件声明窗口指针:
1 | CWnd* m_pTabParentWnd; // Tab父类窗口指针,注:m_pParentWnd在父类中已有定义,故改名 |
在子对话框的OnInitDialog函数中获取父窗口指针:
1 | m_pTabParentWnd = GetParent()->GetParent(); |
注意,需要调用两次GetParent()
函数,子对话框的父窗口,实际是TabCtrl,TabCtrl的父窗口,才是主界面窗口。(不过行文隐藏了一层,直接以父窗口称呼)
m_pTabParentWnd即为父窗口指针,在相应响应函数中,通过父窗口指针,调用GetDlgItem即可得到控件,再调用SetWindowTextW即可输出信息。如:
1 | m_pTabParentWnd->GetDlgItem(IDC_STC_SET_TIPS)->SetWindowTextW(L"参数设置成功"); |
其它子对话框进行同样处理即可。