VC GUI - Ereignishandler in VC2005 anlegen



  • Hallöchen!

    Ich versuche gerade nach einen Lernbuch mir C++ beizubringen. 😃
    Allerdings scheitere ich daran da das Buch etwas älter ist und für den VC6 ausgelegt ist. Jetzt habe ich aber VC2005 und finde da keine Möglichkeit (in VC6 war es der Klassenassistent) ein Eventhandler für meine Dialogbasierende MFC Anwendung hinzuzufügen. Der Eintrag "Ereignishandler" (Rechtsklick auf den Dialog) ist ausgegraut. Hat da jemand eine Idee zu? 😕

    Danke + Gruß Thomas



  • Hast Du dem Dialog schon eine Klasse hinzugefügt.
    Ansonsten öffne den Class View! Selektiere dort die Klasse und wähle aus dem Kontextmenü den Unterpunkt Add!



  • Hallo Martin,

    erstmal vielen Dank für deine Hilfe, aber ich glaube du verstehst nicht ganz was ich meine (oder ich hab es zu undeutlich geschrieben). Ich habe momentan das Problem das ich kein Ereignis zu meinen Dialog hinzufügen kann (z.B. WM_MOUSEMOVE).
    Die Klasse legt mir VC2005 ja sofort mit an C<APPNAME>Dlg. Allerdings kann ich in der Class-View nur unter Add eine Funktion bzw. Variable hinzufügen. Entweder habe ich da was noch nicht geschnallt wegen der Ereignisabfragen oder ich bin da einfach falsch. 😕

    Gruß Thomas



  • Ohne Garantie: Zumindest in älteren VC-Versionen werden Funktionen und Ereignishandler im selben Dialog behandelt, also würde ich mal bei Funktionen nachsehen, ob da etwas zu finden ist.

    PS: Für's nächste Mal wäre es vorteilhaft, einen aussagekräftigen Betreff zu wählen 😉



  • Hallo CStoll,

    erstmal vielen Dank. Aber deine Kritik wegen des Betreffs kann ich nicht ganz nachvollziehen. Aber nungut - deine Hilfe momentan bringt mir nichts. Ich finde da keine Funktion für Ereignishandler - bei Steuerelementen ist die Option ja verfügbar - aber bei Dialog-Fenstern selbst nicht. Ich kenn das aus VC6 auch nur so das alles unter dem Klassenassistenten zu finden ist (dort unter Funktionen). Aber die haben anscheinend alles mögliche geändert. 😞
    Oder ich stelle mich einfach blöd an ... wer weiss. 😉

    Gruß Thomas



  • Markiere die entsprechende Dialog Klasse im Class View.
    Dann wähle im Kontextmenü Eigenschaften um die Proprties anzuzeigen.
    Dort klickst Du auf den Schalter Messages im Eigenschaftsfenster.

    HTH



  • M@rine_of_Hell schrieb:

    Aber deine Kritik wegen des Betreffs kann ich nicht ganz nachvollziehen.

    Dann drehen wir es mal um: Was würdest du machen, wenn du einen Thread mit dem Titel "Visual C++ 2005" siehst? Wenn du eine konkrete Frage hast, kannst du schon im Titel zusammenfassen, was für ein Problem du eigentlich hast.
    (ich war mal so frei und habe den Beitrag umgetauft ;))



  • Hallo Martin,

    also das habe ich schonmal gefunden. Aber ich kann da keine weiteren Messages hinzufügen - zumin. seh ich da keine Option für. Klar ich kann das auch von Hand machen, aber es sollte ja auch via VC2005 gehen!?

    Gruß Thomas

    Edit:

    CStoll schrieb:

    M@rine_of_Hell schrieb:

    Aber deine Kritik wegen des Betreffs kann ich nicht ganz nachvollziehen.

    Dann drehen wir es mal um: Was würdest du machen, wenn du einen Thread mit dem Titel "Visual C++ 2005" siehst? Wenn du eine konkrete Frage hast, kannst du schon im Titel zusammenfassen, was für ein Problem du eigentlich hast.
    (ich war mal so frei und habe den Beitrag umgetauft ;))

    Oops hatte ich als Betreff wirklich nur "Visual C++ 2005" gewählt? Hmm... okay DANN kann ich es nachvollziehen. Entschuldige.

    Thomas



  • M@rine_of_Hell schrieb:

    Aber ich kann da keine weiteren Messages hinzufügen - zumin. seh ich da keine Option für. Klar ich kann das auch von Hand machen, aber es sollte ja auch via VC2005 gehen!?

    Was heisst "weitere Messages"? Meinst Du damit selbstdefinierte Messages z.B. per WM_USER + n?



  • Hallo jencas!

    Ich möchte gerne zum Beispiel das Event WM_MOUSEMOVE als Handler in mein Dialog reinnehmen. Es soll einfach vom Dialog-Fenster geprüft werden was ich beispielsweise mit der Maus mache (Linke/rechte Maustaste gedrückt, Maus bewegt usw.). Ich weiss nur das man in VC++6 das über den Klassenmanager mit der jeweiligen Dialog-Klasse machen konnte bzw. hinzufügen konnte. Aber ich finde die Option dazu im neuen Visual C++ 2005 nicht. Das ist momentan das Problem.

    Gruß Thomas



  • Also bei mir wird WM_MOUSEMOVE im Eigenschafts Dilaog angeboten. Ich klicke hinter den Eintrag, sage neuer handler und das wars...



  • Hallo Martin!

    Erstmal danke. Ich hab jetzt mal zwei Bilder hochgeladen, da ich glaube das wir aneinander vorbei reden was die Auffindung der Option betrifft. 😉

    Rechtsklick in der Klassenansicht unter Messages:
    http://213.239.211.142/msvc2005-screen1.jpg
    Achso noch als Anmerkung, selbst wenn ich die Klasse (nicht Messages direkt) mit Rechts anklicke, bekomme ich nur Funktion/Variable hinzufügen.

    Ausgegraute Schaltflächer (Ereignishandler hinzufügen):
    http://213.239.211.142/msvc2005-screen2.jpg

    Wie schaut's aus? Bin ich da richtig? 😉

    Edit:
    So habe das Event manuell von Hand eingefügt - ist ja nicht sonderlich schwer aber dennoch würde ich gerne wissen wie das mit VC++2005 funktioniert. 😉

    Danke + Gruß Thomas



  • hallo marine,

    ich beziehe mich auf dein 2. Bild:

    wähle dort Eigenschaften.
    Nun sollte das Eigenschaftenfenster aufgehen.

    oben in diesem Fenster ist ein Button, der heißt MELDUNGEN

    klick drauf.

    jetzt erscheinen zwei Spalten:
    1. Spalte: alle Meldungen, die der Dialog bearbeiten kann.
    2. Spalte: fast auschließlich leere Felder
    unter anderen findest du auch die Meldung WM_ONMOUSEMOVE
    in der 2. Spalte klickst du mal auf das leere Feld neben WM_ONMOUSEMOVE
    jetzt erscheint eine Infobox, mit der Frage, ob Onmousemove() hinzugefügt werden soll.
    Mach das 😉
    Viele Grüße
    Kyp

    PS: mein erster konstruktiver Beitrag !!!!!!!! juhu. ich kann was zurück geben 🤡



  • Hallo kyp!

    TAUSEND DANK! Der ist aber auch versteckt!!! 😉
    Ebenfalls noch einmal danke an alle die soviel Geduld mit mir hatten.

    Gruß Thomas aka Marine



  • Da du nicht der erste mit der Frage warst und sie sicher noch öfters kommen wird, schieb ich die schöne Beschreibung mal in die FAQ. 🙂


Log in to reply