我是靠谱客的博主 健忘早晨,最近开发中收集的这篇文章主要介绍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传递给一个全局指针,也可以全局使用并调用父窗口其它变量。

最后

以上就是健忘早晨为你收集整理的MFC中子窗口调用父窗口指针(子类调用父类)教程——100%实现的全部内容,希望文章能够帮你解决MFC中子窗口调用父窗口指针(子类调用父类)教程——100%实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(27)

评论列表共有 0 条评论

立即
投稿
返回
顶部