Dialog
-
Ähm, HÄ?????
Was ist los???Ok, bitte 12487 Gänge zurückschalten, du denkst viel zu kompliziert.
Du öffnest einfach die h-Datei von deinem Dialog und legst da eine neue Membervariable in den Classenteil an. Und zwar unter dem wort public.
Am besen sowas hier:
... public: ... CString m_strMemo; ...
-
ooops... Man lernt nie aus. Besonders mit 15 nicht...
Okay. Muss ich "public" irgendwie schließen?
Wie ist es mit dem Rest den ich geschrieben habe? In Ordnung?
-
Hmm, gute frage, ich versuche immernoch meinen Kopf aus diese extremen Textschlinge zu befreien...
Also wenn du schon ein Edit-Feld mit der Dazugehörigen CString Membervariable in diesem dialog hast, in welches du das Memo eintragen willst, kannst du natürlich auch das Benutzen...
-
aber die Member-Variablen für das Textfeld ist natürlich nicht public... ...Die muss ich dann mit der publishen verinden. Richtig?
-
Ach so, und public mußt du nicht wieder schliesen, es sei den du willst danach noch protected oder private - Variablen haben, dann schreibst du halt die schlüsselwörter dahin...
-
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 TextIch 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!
-
Guten Morgen,
danke - das Buch nutze ich eigentlich ständig
Na ja, man übersieht auch schon mal wasWerd 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->Member2. 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.