SetReadOnly()
-
ich habe das problem schon mal angesprochen.
ich will ein eingabefeld während des programmablaufs mit SetReadOnly steuern. dazu ist eine membervariable vom typ CEdit notwendig. wenn ich allerdings dann auch noch den text aus dem eingabefeld auslesen möchte, dann benötige ich auch noch eine Membervariable vom typ CString. wie bekomme ich das gebacken?
irgendwie mach die funktion SetReadOnly gar keinen sinn, wenn ich nicht zumindest wenn SetReadOnly = false ist den Inhalt des Eingabefeldes auslesen kann?versteht ihr mich?
liebe grüße
andrea
-
nicht direckt aber du kannst dir den text auch ohne eine Membervariable auf CEdit holen indem du wie im anderen thread statt SetDlgItemText GetDlgItemText verwendest.
CString sEditFeld; GetDlgItemText(IDC_EDITFELD,sEditFeld);
mfg
LowFly
-
Oder wenn du nen Pointer auf dein Edit Feld haben willst:
CEdit* pEdit = GetDlgItem(IDC_MYCONTROL); if (!pEdit) return; pEdit->SetReadOnly(true);
-
ich bekomme das irgendwie nicht gebacken.
Kann sein, dass ich Probleme bekomme wenn die memebervariablen in unterschiedlichen Klassen liegen.ich habe z.b. ein Klasse CKlasse und in dieser die Membervariable um das Eingabefeld zu steuern (CEdit). Dann rufe ich doch das ganze mit
CKlasse.CEdit.SetReadOnly(true);auf? Stimmt das?
sind die IDC´s Klassen zugeordnet?
GetDlgItemText(IDC_EDITFELD,sEditFeld);funktioniert bei mir auch nicht. Der string ist leer. Beim kompilieren erscheint keine Fehlermeldung. Was mache ich da falsch?
kann sein, dass es auch hier probleme gibt wenn der CString in einer anderen Klasse steht als der Aufruf der Funktion?Irgendwie bin ich am Ende meiner künste.
liebe Grüße an Euch
Andrea
-
versteh ich dich richtig du willst mit
GetDlgItemText(IDC_EDITFELD,sEditFeld);den string aus einer anderen klasse holen als du GetDlgItemText aufruft??
das kann nicht gehn.
da brauchts du das Handle auf die andere class bzw DialogHWND hWnd; GetDlgItem(IDD_DEINDIALOG,&hWnd); ::GetDlgItemText(hWnd,IDC_EDITFELD,sEditFeld);und von einem Dialogfeld das durch ein Dialogfeld aufgerufen wird kannst du keine Funktionen ansprechen egal in welche richtung.
kuck mal in den thread da kam die gleiche frage schonmal vor
http://www.c-plusplus.net/forum/viewtopic-var-t-is-155883-and-sid-is-28d9d5c4fbab9f0ee1e292a15b128b55.htmlmfg
LowFly
-
Hööhm... Wir sind hier in MFC ... da nutze man bitte die CWnd Funktion...
-
(D)Evil schrieb:
Hööhm... Wir sind hier in MFC ... da nutze man bitte die CWnd Funktion...
Nicht wenn der Zugriff aus einem anderen Thread geschieht... <duck&wech>
-
?? Was willst du damit sagen Martin?
<duck&wech>
Das ist ne gute Entscheidung

-
Wenn man einen CWnd Zeiger in einem anderen Thread verwendet dann führt dies in vielen Fällen zu ASSERTs da die Handles in internen threadlokalen Maps gehalten werden.
Es ist also auch in einem MFC Programm ratsam eher ein Handle an einen anderen Thread weiterzugeben als einen CWn* Zeiger.
Deshalb mein Kommentar.
duck&wech: weil man immer noch was findet wo meinen Senf dazugeben kann auch wenn es nicht direkt zum Topic passt.
-
Ja k... aber das war ja wirklich nicht das Topic
