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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM