一、需求

MFC界面有一个设置对话框,实际使用TabCtrl+子对话框的形式。在子对话框中设置参数时,需要将结果反馈至父窗口下方。这样统一信息输出。本文解决问题:如何在子窗口中,获取父窗口句柄,并在父窗口Static控件输出信息。

" />

MFC小笔记:TabCtrl父子窗口传递消息

一、需求

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"参数设置成功");

其它子对话框进行同样处理即可。