001
10.10.2007, 11:52 Uhr
DasAlteLeid
|
Hy...
Mal sehen ob ich Dir weiterhelfen kann...
Also so wie ich dein Problem verstanden hab, hast Du Dein Dialog-Layout fertig, aber er erscheint nicht wenn du beim laufenden Programm den entsprechenden Menupunkt anklickst?
Das geht so...
Im ressourcen editor klickst Du Menu an und erstellt eben Deinen neuen Menueintrag. Auf den klickst Du mit Rechts, und wählst den Klassen Assistenten an. Dort wählst Du unter dem Reiter "Nachrichtenzuordnungstabellen" die Klasse CMAINFRAME aus. Dann dürfte in der Spalte "Objekt IDs" die ID deines Menupunktes erscheinen. (Also etwa ID_KREIS_ZEICHNEN, je nachdem wie es in deinem Menu heisst). Die ID wählst Du aus....und rechts daneben in der Tabelle klickst Du COMMAND doppelt an. Jetzt fragt er Dich ob du eine neue Methode einfügen willst, du kannst den namen ändern, aber ich würds so lassen. Mit einem Klick auf OK wird in der Klasse CMainFrame die Methode erstellt.
Was ist das??
Wenn Du den Menupunkt anklickst, schickt Windows an deine Anwendung eine Nachricht das eben dieser Menupunkt angeklickt worden ist. Nun muss eben der Dialog gestartet werden!!
Jetzt muss die Document Klasse erfahren, dass der Menupunkt angeklickt wurde. Natürlcih kannst du den Dialog auch gleich von der Klasse aus starten. Ist aber nicht ganz sauber dann. Da ja alle Daten von der Doc Klasse verarbeitet werden sollen. Ich denke mal du hast in der Doc Klasse schon eine Methode um die Daten aus dem Dialog auszulesen??? Wenn nicht dann machst schnell eine...ich nenne sie mal "Kreis" Dann musst du noch die Doc-Klasse in die Mainframe Klasse einbinden, also mit #include... Danch dann olgendes in die Methode OnKreisZeichnen (also die die du eben mit dem Assistenten erstellt hast) eintragen...:
CKreisProgrammDoc* pDoc= (CKreisProgrammDoc*) this->GetActiveDocument(); pDoc->Kreis();
Damit wird Deine Methode in der Doc-Klasse aufgerufen, wenn Du den entsprechenden Menupunkt anklickst.
Nun zurück zu deiner Kreis Methode in der Doc-Klasse Zu allererst musst in der Header Datei deine Dialog Klasse einbinden, die du ja mit erstellt hast, als du den Dialog gebastelt hast. #include "DeinDialog.h"
dann noch eine Art Handler um mit dem Dialog zu kommunizieren.
also etwa..: public: DeinDialog m_Dialog; (ich weiß is ein komischer Stil) jetzt kannst du in deiner Kreis Methode in der Doc-Klasse deinen Dialog aufrufen. also mit: m_Dialog.DoModal();
Jetzt dürft Dein Dialog aufpoppen, wenn du im Menu auf den entsprechenden Eintrag gehst. Das war der erste Teil...wenn Du noch wissen willst wie Du die Daten hin und her schickst...sag bescheid... Ich hoffe ich konnte helfen... Viel Spaß beim Probieren
Mit Computern lösen wir Probleme, die wir ohne sie nicht hätten..... |