概述
最近在写一个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传递给一个全局指针,也可以全局使用并调用父窗口其它变量。
最后
以上就是健忘早晨为你收集整理的MFC中子窗口调用父窗口指针(子类调用父类)教程——100%实现的全部内容,希望文章能够帮你解决MFC中子窗口调用父窗口指针(子类调用父类)教程——100%实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复