Neue Dialoge per Button und Wertübergabe

Schorzz

Grünschnabel
Hallo erstmal,
Ich bin MFC Neuling und habe folgendes Problem: Ich möchte per Button einen neuen Dialog öffnen, und wenn es geht sogar Werte überliefern. Ich habe hier im Forum schon nachgeschaut und rausbekommen, das wenn man
CDialog1 dlg;
dlg.DoModal();
in den Code schreibt, eigentlich ein neuer Dialog geöffnet werden sollte. Bei mir kommen immer 4 Fehler, von wegen nicht deklarierter Bezeichner und so...

Ich arbeite mit Microsoft Visual C++ 6.0 und habe auch eine neue Klasse namens Dialog1 angelegt.
Warum funktioniert das nicht und was muss ich noch tun damit es funktioniert?
 
Hi,

der Fehler kommt daher, das du in dem cpp-FIle, in dem du den Dialog starten möchtest, die Klasse CDialog1 nicht bekannt gemacht hast.

Füge am Anfang der .cpp-Datei folgende Zeile ein:

#include "Dialog1.h"

Dann sollte der Compiler net mehr meckern.

Werte kannst du dem Dialog mitgeben, indem du entweder den Konstruktor so erweiterst, dass er die Werte übernimmt. Du kannst natürlich zu dem Standardkonstruktor mit dem CWnd * Parameter weitere Konstruktoren hinzufügen und diese aufrufen.

Oder zu schreibst dir public Setter Methoden, über die du dem Dialog nach der Instanziierung Werte übergeben kannst.

Gruß,

Peter
 
Ja, Danke erstmal, hat schonmal geklappt, das mit dem Dialog.
Public Setter Methoden habe ich noch nie gehört, und CWnd, klingt schonmal gut. ich habe versucht Werte mit sendmessage zu übergeben und es hat nichts funktioniert.Ich hatte schon an clipboard Funktionen gedacht, müsste doch auch funktionieren.

Wenn du noch Vorschläge hast, immer her damit, ich versuche alles.
 
Hi,

Bsp. für Übergabe per Konstruktor :

Dialog1.h
Code:
    CDialog1( int myParam1, CWnd *pWnd);

    int m_myParam1;

Dialog1.cpp
Code:
CDialog1::CDialog1(int myParam1, CWnd *pWnd) {
    m_myParam1 = myParam1; // wert aus Parameterliste in Membervariable übernehmen
}

Anwendung :
Code:
    int param = 25;
    CDialog1 dlg(param,this); // Variable param wird als Konstruktorargument an den Dialog übergeben
    dlg.DoModal();

Beispiel für Übergabe per public Setter methode // Setter ist ein begriff aus der Java-Welt :)

Dialog1.h
Code:
public:
    CDialog1( CWnd *pWnd);
    void setParam1(int param) { m_myParam1 = param; }
    int m_myParam1;

Anwendung :
Code:
    int param = 25;
    CDialog1 dlg(this);
    dlg.setParam1(param); // variable param wird über die Setter Methode an den Dialog übergeben
    dlg.DoModal();


Viel Erfolg noch,

Peter
 
Ja, ich bedanke mich funktioniert alles, aber eine Frage habe ich noch, undswar könnte ich ich Theoretisch auch Strings bzw chars übergeben - mit der richtigen deklaration?
 

Neue Beiträge

Zurück