Kann die Definition von m_pMainWnd nicht finden



  • Hallo an alle.
    Ich bin gerade dabei C++ mit MFC zu lernen und habe nun mal eine Frage.
    In einem Buch habe ich ein Beispielprogramm gefunden das ich abgetippt habe und das auch ohne Probleme läuft.

    Es beinhaltete folgende Code-Zeilen.

    BOOL CMyAPP::InitInstance()
    {
    m_pMainWnd = new CMyFrame();
    m_pMainWnd->ShowWindow(..........
    }

    und so weiter.

    Nun habe ich ein Projekt mit MFC angelegt so wie im Buch beschrieben.
    Auch das Programm läuft ohne Probleme.
    Ich habe mir nun mal den Quelltext angesehen und finde nun folgenden Code.
    Hier ein Ausschnit des Quelltextes.

    1. CSingleDocTemplate* pDocTemplate;
    2. pDocTemplate = new CSingleDocTemplate(
    3. IDR_MAINFRAME,
    4. RUNTIME_CLASS(CFx03aDoc),
    5. RUNTIME_CLASS(CMainFrame), // Haupt-SDI-Rahmenfenster
    6. RUNTIME_CLASS(CFx03aView));
    7. AddDocTemplate(pDocTemplate);

    8. CCommandLineInfo cmdInfo;
    9. ParseCommandLine(cmdInfo);

    10. if (!ProcessShellCommand(cmdInfo))
    11. return FALSE;

    12. m_pMainWnd->ShowWindow(SW_SHOW);
    13. m_pMainWnd->UpdateWindow();

    14 return TRUE;

    Wodrauf es mir ankommt sind die Zeilen 12 und 13.

    12. m_pMainWnd->ShowWindow(SW_SHOW);
    13. m_pMainWnd->UpdateWindow();

    Wo wird m_pMainWnd deklariert. Jedenfalls nicht in dieser Datei.
    In dem ersten Programm geschiet dies mit m_pMainWnd = new CMyFrame();

    Klar das MFC-Projekt besteht aus mehr Dateien als nur aus dieser aber ich habe alle Dateien im Projekt nach m_pMainWnd durchsuchen lassen.
    Fehlanzeige.
    Ich kann keine Stelle finden in der die Deklaration erfolgt.
    Wo passiert das?

    plutonium2



  • Mal so als Tip für VS Projekte: rechte Maustaste auf Variable/Funktion/Klasse -> "go to declaration"



  • plutonium2 schrieb:

    Klar das MFC-Projekt besteht aus mehr Dateien als nur aus dieser aber ich habe alle Dateien im Projekt nach m_pMainWnd durchsuchen lassen.
    Fehlanzeige.
    Ich kann keine Stelle finden in der die Deklaration erfolgt.
    Wo passiert das?

    plutonium2

    Das Projekt besteht indirekt aus noch mehr Dateien, denn du nutzt die MFC.
    Die Variable, die du suchst ist Teil der MFC.
    Und da hilft der Tip meines Vorredners weiter... oder die MSDN. 😉



  • ...... oder der "Go"-Button von Visual Assist 😋



  • Guck einfach in der MSDN da stehst auch ... und der 2. Code ist doch acuh net soo viel anders... legst halt nur noch nen SDI DocTemplate an und lässt die Parameter die beim starten mit angegeben wurden auswerten ...



  • Erst einmal vielen Dank für die schnellen und brauchbaren
    Antworten.

    Nun aber eine erneute Frage.
    Bei dem ersten Code-Beispiel könnte ich doch mit

    m_pMainWnd = new CMyFrame();
    m_pMainWnd->ShowWindow(.........
    und dann
    m_pMainWnd_2 = new CMyFrame();
    m_pMainWnd_2->ShowWindow(.........

    ein zweites Fenster erzeugen und anzeigen? Oder?

    Wie würde das aber im zweiten Code-Beispiel funktionieren?
    Da wird m_pMainWnd ja nicht von mir angelegt.

    plutonium2



  • das geht so nicht wie du das willst ... m_pMainWnd_2 gibt es nicht.


Anmelden zum Antworten