sdi Menues verbinden



  • Hallo Leute, also ich bin ziemlich neu im proggen und hab da mal ne Frage:

    Also wenn ich mir ein neues SDI Projekt machen, und dann im Resourceneditor die vorgefertigten Eintraege bei IDR_MAINFRM alle losche und neue hinzufuege, und dann z.b. mit der vorgefertigten DialogBox (Info-Box) verbinden will, klappt das nicht.
    Ich gebe dem neuen Menupunkt die ID : ID_INFO_BOX. Wenn ich dann im Klassenassistenten diese ID markiere, Command auswaehle, das ganze dann hinzufuege und dann den Quelltext bearbeite, schreibe ich hin:
    CDialogDlg test;
    test.DoModal();

    beim kompilieren und linken sagt er dann aber, das er die Klasse CDialogDlg nicht kennt. Die steht zwar in einem anderen Modul, ist aber im Projekt enthalten. (Wurde auch automatisch generiert.)

    Und jetzt ist meine grosse Frage, wie kann ich diesen Dialog, und alle Dialoge die ich noch machen will, in der Callback Funktionen ansprechen.

    danke im vorraus und schoenes WE

    Morbus



  • Was ist CDialogDlg denn für eine Klasse? Und wenn sie automatisch generiert wurde; Hast du dein Projekt "Dialog" genannt? Hast du denn die Klasse mit deinem Dialog verbunden? Also wenn du im Resourceeditor deinen Dialog öffnest und dann den Klasseassi aufmachst, fragt er dann ob er die Klasse mit dem Dialog verknüpfen soll?
    Ansonsten poste mal ein wenig Code und die genau Fehlermeldung!



  • Also, CAboutDlg ist eine automatisch generierte Klasse, und zwar abgeleitet von der Klasse CDialog. Das ist die Klasse, welche für den About Dialog steht, welcher normalerweise über das ?->Info Menü erreicht wird. Das ganze wird in meiner "meinProjektname".cpp implementiert. Während aber der ganze Rest, also alles was mit dem MainFrame zu tun hat, in Mainfrm.h bzw. Mainfrm.cpp implementiert wird. Grundprinzipiell möchte ich eigentlich nur wissen, wie man einen neuen Dialog mit einem Menüpunkt in einem SDI-Projekt einfügt und verknüpft.

    mfg

    Morbus



  • In deiner oben genannten Fehlermeldung steht aber kein Fehler in CAboutDialogDlg sondern nur CDialogDlg! Also wenn es so wie du ja schreibst eine Dialog-Klasse ist, ist das was du machst prinzipiell schon richtig, nur wenn er dir sagt, dass er die Klasse nicht kennt wird das Gründe haben. Also normalerweise kannst das so machen:

    void CDeinProjektApp::OnAppAbout()//ist das was du im Klassenassi über command erstellt hast
    {
    	CAboutDlg aboutDlg; //gib hier mal das C ein und drücke dann strg + SPACE dann kannst schauen welche Klassen du hast
    	aboutDlg.DoModal();//wenn du nach aboutDlg kein Intellisens bekommst schau nochmal deine Klasse nach.
    //Und schau auch nach ob du die Header für die Klasse die do modalen willst inludet hast!
    }
    

Anmelden zum Antworten