Hilfe bei menü



  • ich bin einfach zu blöd dazu...

    ich schaffe es zwar ein menü zu erstellen und die einzelnen punkte mit aktionen zu belegen.... ich schaffe es aber nicht einen neuen dialog über das menü aufzurufen....

    kann mir jemand schritt für schritt erklären wie ich das mache....

    Danke JOat



  • Liegt dein Problem beim erstellen von Dialogen oder doch beim Menü?

    Wenn du über das Menü aktionen Startest (warscheinlich erstellst du über den Klassen-Assistenten eine Funktion zu jedem Menüeintrag), dann ist das wohl kaum mehr dein Problem, oder versteh ich das falsch?
    Darum geh´n wir gleich zum erstellen eines Dialoges.

    Zeichne mit dem Ressourceneditor einen Dialog (wie Menü) öffne den Klassenassistenten.

    Es erscheint ein Dialog, drücke auf OK (Neue Klasse erstellen ist angeklickt), vergieb einen Namen (zB.: CMyDialog), drück OK, schließe Klassenass...

    Jetzt schreibst du in deine für den Menüeintrag erstellte Funktion ->

    CMyDialog dlg;
    if(dlg.DoModal()==IDOK)
    {
       //Es wurde auf OK gedrückt :-)
    }
    

    Fertig, Ich hof ich hab nix vergessen.
    TSCHAU, Sigi



  • Klappt immer noch nicht...

    also ich mach das so:

    RK = Rechstklick

    1. Neues Projekt (MFC), Name Test
    2. Dialogfeldbasierend
    3. RK -> Test Ressourcen -> Einfügen -> Menu (IDR_MENU1)
    4. Dann zwei menüeinträge Test -> TestDialog (TestDialog bekommt ID_TEST_TESTDIALOG)
    5. RK Ressourcen -> Einfügen -> Dialog (IDD_DIALOG1)
    6. KlassenAssi -> OK -> NAME: CNeuerDialog -> OK
    7. Klassenname: CTestDlg -> Objekt IDs ID_TEST_TESTDIALOG -> Nachrichten COMMAND -> OK -> OK
    8. ID_TEST_TESTDIALOG -> RK -> Eigenschaften -> Menü -> IDR_MENU1
    9. CNeuerDialog dlg; if(dlg.DoModal()==IDOK) { } in void CTestDlg::OnTestTestdialog() einfügen....-> erstellen -> 4 Fehler....

    C2065: 'CNeuerDialog' : nichtdeklarierter Bezeichner
    error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'dlg'
    error C2065: 'dlg' : nichtdeklarierter Bezeichner
    error C2228: Der linke Teil von '.DoModal' muss eine Klasse/Struktur/Union sein

    so nun möchte ich wissen was ich falsch mache....

    JOat



  • du mußt die neu Klasse bekannt machen
    zB:
    #include "MyTestDialog.h"

    dann sollt´s gehn

    C2065: 'CNeuerDialog' : nichtdeklarierter Bezeichner
    error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'dlg'

    is ne typische Fehlermeldung, wennst nur die hingeschrieben hättest, dann hät is wissen müßen. 🕶

    MFG, Sigi 😉

    PS: und ich hab das ganze Zenario im Kopf durchgespielt (hätt unten anfangen sollen) 🤡



  • ich hab das mit dem include probiert.....

    geht leider nicht...

    ich hab das mal hochgeladen....

    klick

    JOat



  • Du musst die Klasse auch richtig bezeichnen!

    void CTestMenueDlg::OnTestTest() 
    {
    CTestMenueDlg dlg;
    //CTestMenueDialog dlg; 
    if(dlg.DoModal()==IDOK) 
    { 
       //Es wurde auf OK gedrückt :-) 
    }
    
    }
    

    😉



  • soll wohl heißen

    CTestDialog dlg;
    

    😉
    Den er ist ja in der CTestMenueDlg!
    BYE, Sigi



  • öhmmmm ja.... da hatte ich garnichtmehr geschaut....

    thx

    JOat


Anmelden zum Antworten