MFC中子窗口调用父窗口指针(子类调用父类)教程——100%实现

最近在写一个MFC程序,其中遇到了子窗口调用父窗口指针的问题,具体解决过程如下:

一、创建子窗口(这里就不详细说了,可以自己百度,网上有相关的教程)

二、子窗口调用父窗口指针的函数代码

CMFCDlg *pDlg = (CMFCDlg*)this->GetParent();
m_DeviceCurSel = pDlg->m_nDeviceCurSel;

注:工程说明,我的工程是调用相机的参数并对其进行设置,其中相机的编号是在父窗口类中定义和说明的,而相机参数是在子窗口类中定义和声明的,这就需要子窗口调用父窗口的相机编号这个参数。上面两行代码中CMFCDlg为父窗口类。

具体过程:

1、在子窗口的.h头文件中定义虚函数OnInitDialog(),并在.cpp文件中添加虚函数OnInitDialog()声明

1).h头文件中定义虚函数OnInitDialog()

public:
virtual BOOL OnInitDialog();

2).cpp文件中添加虚函数OnInitDialog()声明

BOOL Cdialog1::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO:  在此添加额外的初始化
return TRUE;  // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}

2、添加调用父窗口指针的函数代码

BOOL Cdialog1::OnInitDialog()

{

CDialog::OnInitDialog;

CMFCDlg *pDlg = (CMFCDlg*)this->GetParent();

m_DeviceCurSel = pDlg->m_nDeviceCurSel;

return TRUE;

}

注:因为生成的父窗口指针pDlg为函数OnInitDialog()局部变量,不能为全局所用,所以要将其传递给一个全局变量,这里为m_DeviceCurSel,将m_DeviceCurSel子窗口头文件中定义“public:int   m_DeviceCurSel ;”,这样就可以全局使用该变量了。或者将pDlg传递给一个全局指针,也可以全局使用并调用父窗口其它变量。

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值