Dialog



  • Hmm, ja bei showdialog oder initdialog, weis nicht genau wo es bei dir am besten ist... kannst du nicht einfach die Membervariable ins public setzen?



  • ok, dass neue Fenster zu öffnen, habe ich jetzt drauf 😉

    Jetzt mach ich mich an die Member-Variablen!



  • jetzt habe ich das Memo (RichEdit)-Feld eingefügt und plötzlich öffnet sich das Dialogfeld nicht mehr. Zur Überprüfung ob es wirklich daran liegt, habe ich es kurzer Hand entfernt und jetzt läufts wieder...
    Was ist das denn jetzt schon wieder?



  • Wieso nimmst du ein Richedit? Nimm doch einfach ein Multiline Edit.



  • also ein mehrzeiliges (einfaches) Eingabefeld?



  • Jep, ein engabefeld, in dessen Propherties du multiline setzt.



  • Hallo, okay - soweit funktioniert jetzt alles. Jetzt werde ich mich an das Problem mit den Variabeln begeben:

    CString <- Eingaben
    <- weitere Text

    Ich möchte die Eingaben in einen Längeren Text (HTML/PHP-Code) einbauen. Wenn ich Zeilenumbrüche in der deklaration eines CStrings mache, mäkelt er allerdings. Wie kann ich so lange Texte dort einbetten und meine Variabeln reinpacken (in PHP würde das etwa so aussehen:

    $var "blablabla
    
    blablablablabla
    
    .$x blablablabla
    
    blablabla .$y ";
    


  • Guten Nabend,

    ich bin schon wieder ein gutes Stück weiter, verstehe jedoch nicht, warum mein öffentliche Membervariable nicht funktioniert:

    In der Header-Datei des Startdialoges habe ich einfach mal in der Klasse folgenden Eintrag vorgenommen, da ich nicht wusste wo genau hin damit, müsste aber doch eigentlich gehen:

    public:
         CString m_code;
    

    In dem anderen Dialog (!!!) habe ich dann folgendes versucht:

    MessageBox(m_code);
    

    Keine Fehlermeldung für die Deklaration der öffentlichen Variabel. Von der Klasse aus kann ich auch auf sie zugreifen, aber nicht vom anderen Dialogfeld, also der anderen Klasse aus.

    Wo liegt der Fehler, bzw. was habe ich bei der Deklaration nicht beachtet?

    Gute 8
    Nico



  • @NetRider:
    Ich würde dir empfehlen da du dieses Buch hier mal liest, das beschäftigt sich mit all den Problemen die du hier schon geschildert hast und bietet einen sehr guten Einstieg in MFC!

    http://www.mut.de/media/buecher/VCPLUS6/data/start.htm



  • Guten Morgen,

    danke - das Buch nutze ich eigentlich ständig 🙂
    Na ja, man übersieht auch schon mal was 😉

    Werd jetzt nachschauen...

    Nico



  • Ich hab jetzt in verschiedenen Tutorials und Referenzen nachgelesen, aber nichts zu meinem Problem gefunden.

    Ferner habe ich noch eimal rumgebastelt - es müsste so doch richtig sein...

    In der Header-Datei des **Standarddialoges die public Member-Variable definiert und in der gleichen Klasse, also in dem Dialog, in einer Funktion der Variabel einen Wert verpasst.

    Von dem anderen Dialog aus muss ich dann doch die Variabel sehen können!? "Nichtdeklarierter Bezeichner" kommt jedoch...

    Nico**



  • Hmm, wenn ich dir richtig verstehe, dann versuchst du auf eine Membervariable einer Fremden Klasse zuzugreifen, das geht nicht so einfach.

    1. Auf klassenmember greift man so zu: Klassenname.Member
    oder wenn der klassenaame ein Pointer ist: Klassenname->Member

    2. Die klasse muß bekannt sein. Die variable muß public sein.

    3. Eine child-klasse kennt Ihre Vaterklasse nicht. Es sei denn, die Vaterklasse übergibt der childklasse einen pointer von sich (this).

    So, jetzt überleg was auf dich zutrifft.



  • 1, 2 oder 3, letzte Chance - vorbei 😉

    1<<<

    MessageBox(Cklasse.m_code);

    dann sollte das z.B. funktionieren...



  • Hmm, glaube ich eigentlich nicht das es so funktioniert.

    Ich würde sagen du machst es so:

    <<< Dialog1 >>>

    Hat als Member einen String m_strMemo.
    Irgenwo wird dann der Dialog2 deklariert und aufgerufen.

    CDialog2 dlg;
    dlg.m_strIrgendwas = m_strMemo;
    dlg.DoModal();

    <<<Dialog2>>>

    Weis normallerweise nicht von wem er aufgerufen wurde. Kann es aber wissen, wenn er z.B. einen Member

    CDialog2* dlgParDlg;

    hat (mann muß dazu den Header von CDialog2 einbinden, kann problemme machen), dann kann man den aufruf im Dialog1 so erweitern:

    dlg.dlgParDlg = this;

    danach kann man im Dialog2 auch folgendes machen:

    m_strIrgendwas = dlgParDlg->m_strMemo;

    Ok, ich hoffe jetzt hast du es kappiert... ´wenn noch Fragen, bitte posten.


Anmelden zum Antworten