Dialog aufrufen über menüpunkt

bukem

Mitglied
Hi,

ich habe vollg. problem ich will über eine menüpunkt einen dialog aufrufen und verschieden einstellugen vornehmen zu können keinen std dialog. über einen mausclick geht es. die id sind vergeben und die messgae map für den mausclick sind ok. aber wenn ich versuche die message map für den menü punkt einzutragen kann ich meine classe die ich erstellt habe für den dialog nicht aufrufen bzw. das es kein member ist. wie mus ich vorgehen um einen menü punkt mit dem aufruf des dialog.
für den dialog ist eine cpp und h datei erstellt und eingebunden.

kann mir jemand helfen bzw eine link sagen.

tnx alex
 
Zuletzt bearbeitet:
Einfach da, wo der Handler ist, oben die .h des Dialogs includen.

Wenn es MFC ist:

CMeinTollerDialog dlgWahnsinn;

dlgWahnsinn.DoModal();


in Win32 API:

DialogBox( ..... ) mit der passenden Ressourcen-ID und DialogProc und dem HWND des Parents.
 
Hi,
soweit so gut. ich habe ein problem mit einfügen von dem befahlshandler.
anscheinend habe ich da ein verständiss problem. allso ich habe zwei files einmal die cpp. und die .h in dieser ist die dialogklasse definiert. in diesen ist auch die map def.
ON_COMMAND(ID_BEARBEITEN_ONDIALOG1,OnDialog1) . Nur ist das menu deaktivert.
Damit habe ich so meine probleme das ich nicht genau weiß wo der fehler ist.
ES sollte so sein wie z.b die ABOUTBOX bei einem stdandard sdi projekt, nur egal wir ich es machen ich bekomme keine verbindeung zwischen dem menu und dem dialog hin.

Hier mein vorgehen/Verständnis:

im menu editer erstelle ich einen eintrag, und vergebe eine id zb. OnDialog1

danach erstelle einen Dialog. daraus erstelle ich die Klasse datei myDialog in den dateien x.cpp und y.h

nun will ich wenn man im menu auf MyDialog clickt der dialog aufgerufen wird.

ich erstellen die map

ON_COMMAND(ID_BEARBEITEN_ONDIALOG1,OnDialog1) in der cpp datei

und afx_msg void OnDialog1(); in der .h datei

nun noch void CDialog1::OnDialog1()
{
CDialog1 MyDialog1;
MyDialog1.DoModal();
}
in der cpp datei nun das wars, nach meinem verständnis müste jetzt doch wenn ich auf den menu eintrag clicke InDIalog aufgerufen werden?


Alex
 
Zuletzt bearbeitet:
Der Handler (OnCommand) darf natürlich nicht in den Dialog, den er ja erst aufrufen soll, eingebaut werden.

Das Menü ist doch in einem Fenster drin (MainFrame?).

Setze bzw. lasse den Handler vom Wizard dort einsetzen (In VC6 über den ClassWizard), ab VC7 kannst du im Menü-Editor den Eintrag rechts-klicken und "Eventhandler hinzufügen" wählen. Im Dialog dort kannst du auswählen, in welche Klasse der Handler automatisch eingebaut werden soll. Nimm hier NICHT deinen Dialog, sondern das Hauptfenster (MainFrame oder App sollte klappen).
 
Zurück