CFormView



  • Hallo,
    schreibe gerade eine Anwendung der Klasse CFormView. Die Klasse CApp besitzt die Membervariable m_nCur. Diese wird in der InitInstance mit den Wert 0 beschrieben. So weit so gut.
    Problem ist wenn später aus dem Dialog eine Routine in CApp aufgerufen wird, dann ist dieser Wert 0 vergessen.
    Kann mir jemand helfen und sagen wie ich diese Problem beseitige??

    Danke



  • Wenn du keinen Quelltext dazu zeigst, wird dir niemand helfen können.

    Zeig doch bitte mal, wo du das in dem Dialog machst. 🙂



  • OK :

    CTestApp.h

    public:
    CView * ChoosePage( UINT nIndex );
    CPCEPTTerminalApp();

    protected:
    // Index zum aktuellen Form
    UINT m_nCurView;
    ------------------------------------------

    // VAriable m_nCurView wird das erste mal beschrieben
    BOOL CTestApp::InitInstance()

    m_nCurView = 0;
    ------------------------------------------

    // Und in diesem FormView wird wenn der Button gedrueckt wird die Funktion ChoosePage gestartet
    void CPCEPTTerminalView::OnButtonStart()
    {
    ((CPCEPTTerminalApp*)AfxGetApp)->ChoosePage( 1 );
    }
    ------------------------------------------

    CView * CPCEPTTerminalApp::ChoosePage(UINT nIndex)

    m_nCurView = nIndex; // SO UND HIER BEKOMME ICH EINE FEHLERMELDNG : UNBEHANDELTE ROUTINE UND DER VORHERIRGE WERT IST WEG

    😕 😕 😕



  • (kleine Bitte: Nutze nächstes Mal die Code-tags (gleich unter den Smilies), dann kann man es besser lesen.)

    Ich hab es!

    Du hast die Klammern vergessen. Und da du einen C-Cast nutzt, kriegst du keinen NULL Wert und springst wirr durch den Speicher. 🙄

    [cpp]((CPCEPTTerminalApp*)AfxGetApp**()**)->ChoosePage( 1 );[/cpp]

    Tu dir einen Gefallen: Schalte in den Projekteigenschaften RTTI ein und schreib die Zeile so um.

    CPCEPTTerminalApp* pApp = dynamic_cast<CPCEPTTerminalApp*>(AfxGetApp());
    ASSERT(pApp);
    pApp->ChoosePage(1);
    

    dynamic_cast gibt dir NULL zurück wenn er das nicht casten konnte. Dadurch vermeistest du solche Fehler und programmierst typensicher. Schau einfach mal in ein gutes C++ Buch, was der genau macht. 🙂

    Jetzt sollte es gehen.



  • Juhuu jetzt läufts.
    Danke
    🙂 🙂 🙂


Log in to reply