Dialog



  • Hallo ich habe ne Frage wie verwende ich eine Variable in 2 Dialogen?
    Ich habe einen dialog der heißt gameover und den Hauptdialog SpielDlg
    so und ich hatte dann im Dialog gameover ein Eingabeleld wo man dann sehen soll wieviele Punkte man hatte die Variable dazu heißt m_punkte und es Funktioniert auch alles nur ich kann die Variable halt nicht im gameover Dialog aufrufen

    ich hatte es so probiert

    int CSpielDlg::m_punkte; //Im Dialog gameover

    aber ich bekomme dann diesen Fehler

    error C2653: 'CSpielDlg' : Keine Klasse oder Namespace

    was kann ich tun um die Variable in beiden Dialogen benutzen zu können?



  • 1. ist m_punkte überhaupt "static"???
    2. hast du die .h-Datei von CSpielDlg eingebunden?



  • auf beide Fragen Ja
    header ist eingebunden
    Variable ist jetzt static
    bringt aber nichts



  • ohoh...
    wie wär's mit
    int punkte = CSpielDlg::m_punkte;



  • geht nicht gleicher Fehler (siehe oben)



  • Könntest du bitte den Code der Methode zeigen in der du die Member aufrufst?
    Dann könnte ich vielleicht mehr sagen...



  • ja also erstmel gameover heißt jetzt nicht mehr gameover sondern dead

    und das ist die dead cpp

    // dead.cpp: Implementierungsdatei
    //
    
    #include "stdafx.h"
    #include "spiel.h"
    #include "spielDlg.h"
    #include "dead.h"
    
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif
    
    /////////////////////////////////////////////////////////////////////////////
    // Dialogfeld dead 
    
    dead::dead(CWnd* pParent /*=NULL*/)
        : CDialog(dead::IDD, pParent)
    {
        //{{AFX_DATA_INIT(dead)
    
        punkte = 0;
    //  int punkte = CSpielDlg::m_punkte;
        //}}AFX_DATA_INIT
    }
    
    void dead::DoDataExchange(CDataExchange* pDX)
    {
        CDialog::DoDataExchange(pDX);
        //{{AFX_DATA_MAP(dead)
        DDX_Text(pDX, IDC_EDIT1, punkte);
        //}}AFX_DATA_MAP
    }
    
    BEGIN_MESSAGE_MAP(dead, CDialog)
        //{{AFX_MSG_MAP(dead)
            // HINWEIS: Der Klassen-Assistent fügt hier Zuordnungsmakros für Nachrichten ein
        //}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    
    /////////////////////////////////////////////////////////////////////////////
    // Behandlungsroutinen für Nachrichten dead
    

    das ist die dead.h

    #if !defined(AFX_DEAD_H__831769E0_D9EB_11D6_83FE_0001020F22E2__INCLUDED_)
    #define AFX_DEAD_H__831769E0_D9EB_11D6_83FE_0001020F22E2__INCLUDED_
    
    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
    // dead.h : Header-Datei
    //
    
    /////////////////////////////////////////////////////////////////////////////
    // Dialogfeld dead 
    
    class dead : public CDialog
    {
    // Konstruktion
    public:
        dead(CWnd* pParent = NULL);   // Standardkonstruktor
    
    // Dialogfelddaten
        //{{AFX_DATA(dead)
        enum { IDD = IDD_DIALOG4 };
        int     punkte;
        //}}AFX_DATA
    
    // Überschreibungen
        // Vom Klassen-Assistenten generierte virtuelle Funktionsüberschreibungen
        //{{AFX_VIRTUAL(dead)
        protected:
        virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV-Unterstützung
        //}}AFX_VIRTUAL
    
    // Implementierung
    protected:
    
        // Generierte Nachrichtenzuordnungsfunktionen
        //{{AFX_MSG(dead)
            // HINWEIS: Der Klassen-Assistent fügt hier Member-Funktionen ein
        //}}AFX_MSG
        DECLARE_MESSAGE_MAP()
    };
    
    //{{AFX_INSERT_LOCATION}}
    // Microsoft Visual C++ fügt unmittelbar vor der vorhergehenden Zeile zusätzliche Deklarationen ein.
    
    #endif // AFX_DEAD_H__831769E0_D9EB_11D6_83FE_0001020F22E2__INCLUDED_
    

    und das ist die SpielDlg.h

    // spielDlg.h : header file
    //
    
    #if !defined(AFX_SPIELDLG_H__452D6C15_BA73_11D6_8DA9_0050DA0814C5__INCLUDED_)
    #define AFX_SPIELDLG_H__452D6C15_BA73_11D6_8DA9_0050DA0814C5__INCLUDED_
    
    #include "InfoDialog.h" // Hinzugefügt von der Klassenansicht
    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
    
    /////////////////////////////////////////////////////////////////////////////
    // CSpielDlg dialog
    
    class CSpielDlg : public CDialog
    {
    // Construction
    public:
        void full(int,int);
        void ei(int,int);
        void monster(int, int);
        CInfoDialog m_dInfoDialog;
        void changecoord(int, int);
        int m_figurcolor;
        int m_monstercolor;
        int m_eicolor;
        int m_fullcolor;
        void drawspielfeld();
        void removefigur(int, int);
        void removemonster(int, int);   
        void removeei(int, int);
        void removefull(int,int);
        int m_figury;
        int m_figurx;
        int m_monsterx;
        int m_monstery;
        int m_eix;
        int m_eiy;
    
        int m_fully;
        int m_fullx;
       int  m_punkte;
        int m_rahmencolor;
        int m_feldcolor2;
        int m_feldcolor1;
        int m_feldhoehe;
        int m_feldbreite;
        int m_feldy;
        int m_feldx;
        int m_feldposy;
        int m_feldposx;
        void figur(int, int);
        CSpielDlg(CWnd* pParent = NULL);    // standard constructor
    
    // Dialog Data
        //{{AFX_DATA(CSpielDlg)
        enum { IDD = IDD_SPIEL_DIALOG };
        CButton m_button;
        CString m_name;
        int     m_step;
    
        int     ge;
        int     ue;
        int     level;
        //}}AFX_DATA
    
        // ClassWizard generated virtual function overrides
        //{{AFX_VIRTUAL(CSpielDlg)
        public:
        virtual BOOL PreTranslateMessage(MSG* pMsg);
        protected:
        virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
        //}}AFX_VIRTUAL
    
    // Implementation
    protected:
        HICON m_hIcon;
    
        // Generated message map functions
        //{{AFX_MSG(CSpielDlg)
        virtual BOOL OnInitDialog();
        afx_msg void OnPaint();
        afx_msg HCURSOR OnQueryDragIcon();
        afx_msg void OnExit();
        afx_msg void OnInfo();
        afx_msg void OnSpielEinstellungenFeldfarbeyRot();
        afx_msg void OnSpielEinstellungenFeldfarbeyGrn();
        afx_msg void OnSpielEinstellungenFeldfarbeyGelb();
        afx_msg void OnSpielEinstellungenFeldfarbeyWei();
        afx_msg void OnSpielEinstellungenFeldfarbeySchwarz();
        afx_msg void OnSpielEinstellungenFeldfarbexRot();
        afx_msg void OnSpielEinstellungenFeldfarbexGrn();
        afx_msg void OnSpielEinstellungenFeldfarbexBlau();
        afx_msg void OnSpielEinstellungenFeldfarbexSchwarz();
        afx_msg void OnSpielEinstellungenFeldfarbexWei();
        afx_msg void OnSpielEinstellungenRahmenfarbeGrau();
        afx_msg void OnSpielEinstellungenRahmenfarbeBlau();
        afx_msg void OnSpielEinstellungenRahmenfarbeGrn();
        afx_msg void OnSpielEinstellungenRahmenfarbeRot();
        afx_msg void OnSpielEinstellungenRahmenfarbeWei();
        afx_msg void OnSpielEinstellungenRahmenfarbeSchwarz();
        afx_msg void OnSpielEinstellungenRahmenfarbeGelb();
        afx_msg void OnSpielEinstellungenRahmenfarbeLila();
        afx_msg void OnSpielEinstellungenFeldfarbeyLila();
        afx_msg void OnSpielEinstellungenFarbederfigurRot();
        afx_msg void OnSpielEinstellungenFarbederfigurGrn();
        afx_msg void OnSpielEinstellungenFarbederfigurBlau();
        afx_msg void OnSpielEinstellungenFarbederfigurTrkis();
        afx_msg void OnSpielEinstellungenFarbederfigurGelb();
        afx_msg void OnSpielEinstellungenFarbederfigurLila();
        afx_msg void OnSpielEinstellungenFarbederfigurOcker();
        afx_msg void OnSpielEinstellungenFarbederfigurSchwarz();
        afx_msg void OnSpielEinstellungenFarbederfigurWei();
        afx_msg void OnSpielEinstellungenFarbederfigurGrau();
        afx_msg void OnSpielNameeingeben();
        afx_msg void OnButton1();
        afx_msg void OnSpielEinstellungenFeldfarbexLila();
        afx_msg void OnSpielEinstellungenFeldfarbexGelb();
        afx_msg void OnSpielEinstellungenFeldfarbexGrau();
        afx_msg void OnSpielEinstellungenFeldfarbeyGrau();
        afx_msg void OnSpielEinstellungenFeldfarbeyGtz();
        afx_msg void OnSpielRckgngigAllefarbenwiederherstellen();
        afx_msg void OnSpielInfo();
        afx_msg void OnSpielEinstellungenFarbedesmonstersLila();
        afx_msg void OnSpielEinstellungenFarbedesmonstersBlau();
        afx_msg void OnSpielEinstellungenFarbedesmonstersRot();
        afx_msg void OnSpielEinstellungenFarbedesmonstersGrn();
        afx_msg void OnSpielEinstellungenFarbedesmonstersTrkis();
        afx_msg void OnSpielEinstellungenFarbedesmonstersGelb();
        afx_msg void OnSpielEinstellungenFarbedesmonstersOcker();
        afx_msg void OnSpielEinstellungenFarbedesmonstersSchwarz();
        afx_msg void OnSpielEinstellungenFarbedesmonstersWei();
        afx_msg void OnSpielEinstellungenFarbedesmonstersGrau();
        afx_msg void OnLevelLevel1();
        afx_msg void OnLevelLevel2();
        afx_msg void OnLevelLevel3();
        afx_msg void OnX();
        afx_msg void OnMenuitem32835();
        afx_msg void OnHilfeSteurung();
        afx_msg void OnSpielSinstigesHilfeSteurung();
        afx_msg void OnSpielSinstigesHilfeSinndesspiels();
        afx_msg void OnHilfeSinndesspiels();
        afx_msg void OnSpielEinstellungenFarbedereierRot();
        afx_msg void OnSpielEinstellungenFarbedereierGrn();
        afx_msg void OnSpielEinstellungenFarbedereierBlau();
        afx_msg void OnSpielEinstellungenFarbedereierGelb();
        afx_msg void OnSpielEinstellungenFarbedereierLila();
        afx_msg void OnSpielEinstellungenFarbedereierGrau();
        afx_msg void OnSpielEinstellungenFarbedereierSchwarz();
        afx_msg void OnSpielEinstellungenFarbedereierWei();
        afx_msg void OnSpielStart();
        afx_msg void OnExtrasIndiehighscore();
        afx_msg void OnExtrasHighscoresehen();
        afx_msg void OnExtrasHighscorelschen();
        afx_msg void OnSpielEinstellungenDialogfrabeSchwarz();
        afx_msg void OnSpielEinstellungenFarbeextraeierGelb();
        afx_msg void OnSpielEinstellungenFarbeextraeierRot();
        afx_msg void OnSpielEinstellungenFarbeextraeierGrn();
        afx_msg void OnSpielEinstellungenFarbeextraeierBlue();
        afx_msg void OnTimer(UINT nIDEvent);
        afx_msg void OnButton2();
        afx_msg void OnButton5();
        afx_msg void OnButton3();
        afx_msg void OnButton6();
        afx_msg void OnButton4();
        afx_msg void OnButton7();
        afx_msg void OnSteuerungMaus();
        afx_msg void OnSteuerungTastatur();
        afx_msg void OnButton8();
        afx_msg void OnUpdateEdit1();
        afx_msg void OnExtrasGetthepointsspielen();
        //}}AFX_MSG
        DECLARE_MESSAGE_MAP()
    };
    
    //{{AFX_INSERT_LOCATION}}
    // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
    
    #endif // !defined(AFX_SPIELDLG_H__452D6C15_BA73_11D6_8DA9_0050DA0814C5__INCLUDED_)
    

    und es geht halt um die Variablen punkte und m_punkte
    m_punkte gehört ja zu SpielDlg



  • Erstelle einen Zeiger auf deine DlgKlasse.

    // in der deadklasse
    
    CSpielDlg * m_pOwner;
    void SetOwner(CSpielDlg * pOwner) { m_pOwner = pOwner; };
    // Zugriff auf die Member des Dlg dann mit
    m_pOwner->m_punkte;
    
    // In Dialogklasse
    
    m_deadklasse->SetOwner(this);
    


  • OK, ich glaube wir reden an uns vorbei 🙄

    1. das Element m_punkte ist doch gar nicht statisch (oder hast du das extra abgeändert?)
    2. die Deklaration ist ok, aber sie nützt eigentlich nichts um auf das Problem zu stoßen. Könntest du bitte NUR den Code der METHODE posten in der CSpielDlg::m_punkte AUFGERUFEN wird?


Anmelden zum Antworten