Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Dialogbox

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
24.09.2007, 10:43 Uhr
Marina



Hallo ihr,
ich hab ein kleines problem und würd mich freuen,wenn ihr mir etwas helfen könntet,da ich im umgang mit visual c++ noch nicht sehr viele erfahrungen habe.
also ich hab ein sdi mit menü erstellt und würde es gerne so einrichten, dass, wenn man einen bestimmten menüpunkt (z.b.kreis) anklickt eine dialogbox erscheint, die es ermöglicht einen kreis zu zeichnen. man sollte also den radius und den mittelpunkt wählen können und das programm erstellt dann den kreis. die dialogbox hab ich soweit schon,aber man kann halt noch nichts eingeben und es erscheint auch noch nichts...

viele grüße

marina
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
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.....
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: