zoukankan      html  css  js  c++  java
  • MFC 不同窗体之间变量调用

    应用场景:

    (1)主对话框包含一个Tab控件,Tab控件用来切换显示若干子对话框,子对话框类的成员需要互相访问。

    (2)或者程序中包含多个类,各类之间需要互相访问。

    方法1-定义指针成员变量:

    详情参见文章:MFC一个类访问另一个类成员对象的成员变量值 - 路人浅笑 - 博客园 https://www.cnblogs.com/perfy/p/5329630.html

    方法2-定义全局指针变量:

    与方法1类似,只不过定义的指针变量在类的实现cpp文件中,是全局变量。

    //TeachDlg.h
    
    class TeachDlg
    {
        int number;
        void Lesson();
    }
    //TeachDlg.cpp
    
    #include "TeachDlg.h"
    
    TeachDlg  * g_DlgTeach;
    
    void TeachDlg::Lesson()
    
    {
         number = 1;
    
    }

    这样就可以省去在类外初始化静态成员指针这一步,只需要在类的构造函数中或者对话框初始化函数中对指针进行赋值。如下:

    //TeachDlg.cpp
    BOOL TeachDlg::OnInitDialog()
    {
        CDialogEx::OnInitDialog();
    
        // TODO:  Add extra initialization here
        g_DlgTeach = this;
        ...
    }

    最后在其他类中调用本类的函数时,需要在其实现cpp文件中声明这个全局指针即可。

    //Student.cpp
    #include "TeachDlg.h"
    
    extern TeachDlg *g_DlgTeach;
    
    Student::Study()
    {
        g_DlgTeach->Lesson();
    }

    注意:

    如果没有对指针进行初始化, 即没有执行 g_DlgTeach = this; 这句话,

    就调用指针来访问TeachDlg类的成员函数,是不会报错的,但访问成员变量就会报错。

    image

  • 相关阅读:
    Livepool
    Eclipse最新版注释模板设置详解
    hashcode详解
    开发集成工具MyEclipse中Outline的问题
    第三章 数据链路层(二)
    Java常考面试题(四)
    collections集合的总括。
    第三章 数据链路层(一)
    Java常考面试题(三)
    Java常考面试题(二)
  • 原文地址:https://www.cnblogs.com/oucsheep/p/9236717.html
Copyright © 2011-2022 走看看