UpdateData(false); -> Debug Assertion Failed
-
gute nacht johni schrieb:
Um das ganze mal zu entschärfen. Und entschudligung das ich mich hier auch einmische. Habe das ganze auch verfolgt und habe ein ähnliches Problem.
Was ich aber auch nicht ganz verstanden habe: Soll nun SetWindowText() verwendet werden oder nicht?
Es sollen nach möglichkeit KEINE MFC Funktionen verwendet werden, sondern Windows API. Also SetWndowText!
Was ist daran unklar?Genau wie connan schreibt! Es gibt SetWindowText mehrfach
-
visualer schrieb:
Vergiss es. Man hat mich schon gewarnt vor deinen komischen Aussagen.
Jo! Und tschüss!
-
Es gibt SetWindowText() (API) und es gibt CWnd::SetWindowText() (MFC)!
Achso jetzt wird mir das klar.
Darf ich jetzt auch nochmal was fragen. Wenn ich nun in meiner Dialogklasse SetWindowText aufrufe dann verwende ich ja die von MFC. Wie greife ich nun aber auf die Api Funktion zu.
-
Also was ich bereits gemacht habe ist "Windows.h" included. So wenn ich nun aber SetWindowText() aufrufe wird immer noch auf die SetWindowText der MFC verwendet.
Muss ich da noch was definieren?
-
Hallo,
eine C++-Grundlagenforschung würde ergeben: Man verwendet den ::-Operator, um auf solche Funktionen zuzugreifen.
MfG,
Probe-Nutzer
-
Jo. Aber auf welchen Namenraum oder Klasse?
-
kein Namensraum, das ist ja das entscheidende hier:
http://msdn.microsoft.com/en-us/library/b451xz31(VS.80).aspx
MfG,
Probe-Nutzer
-
Oje. Jetzt habe ich mich reichlich plamiert. Logisch. Jetzt traue ich mich gar nicht mehr zu fragen.
Machs aber trotzdem: Was gebe ich nun dem SetWindowText als HWND mit. Klar dass von meinem Controll aber wie bekomme ich das.
-
GetSafeHwnd() ist eine Möglichkeit oder Du greifst direkt auf den m_hWnd Member des Controls zu.
-
Super vielen Dank. Jetzt nur noch eine kleine Frage. Gibt es auch noch eine weitere Funktion um Textfelder zu setzten nur mit Zahlenwerten oder muss ich dazu meine int Werte in einen String formatieren?
-
Zu früh gefreut. Funktioniert nicht:
CWnd *wndtest= GetDlgItem(IDC_EDIT_TEST); ::SetWindowText((HWND)wndtest,"test");
In meinem Textfeld steht leider nichts drin.
-
nicht GetDlgItem() sondern GetSafeHwnd()
aufwachen Johni!
-
Bei GetSafeHwnd() kann ich doch aber gar kein Parameter angeben welches Controll ich will.
-
gute nacht johni schrieb:
Bei GetSafeHwnd() kann ich doch aber gar kein Parameter angeben welches Controll ich will.
Ne! Das kannst Du nicht. Na und?
Wenn Du hören würdest was Dir die gesagt wird: "Win32 API verwenden",
dann kämst Du vielleicht aufdie Idee GetDlgItem aus der Windows API zu verwenden.Und ja! Ehe Du Dich wieder bei mir beschwerst. Auch diese Funktion gibt es zweimal. In der MFC und in der API.
So ist das nunmal, denn die MFC ist eine dünne Hülle (Wrapper) um die Windows API.HWND wndtest= ::GetDlgItem(m_hWnd,IDC_EDIT_TEST); ::SetWindowText(wndtest,_T("test"));
Letzter Tipp: Wenn etwas wegen einem falschen Typ eine Compiler-Warnung auswirft, wel CWnd* eben kein HWND ist, dann ist ein cast in 99% aller Fälle der falsche Weg.
Und jetzt verabschiede ich mich wirlich aus diesem Thread...
-
Martin Richter schrieb:
Wenn Du hören würdest was Dir die gesagt wird: "Win32 API verwenden",
dann kämst Du vielleicht aufdie Idee GetDlgItem aus der Windows API zu verwenden.Ich habe zugehört habe es auch so gemacht. Hatte noch nen anderen kleinen Fehler drin deshalb hat es nicht getan. Sorry.
Martin Richter schrieb:
Und ja! Ehe Du Dich wieder bei mir beschwerst.
Ich habe mich doch noch gar nicht bei dir beschwert.
-
Also erstmal nochmal vielen Dank für alle Antworten. Jetzt steht nur noch die eine kleine Frage offen:
Gibt es auch noch eine weitere Funktion um Textfelder zu setzten nur mit Zahlenwerten oder muss ich dazu meine int Werte in einen String formatieren?
-
-
@Probe-Nutzer
Ja genial. Dann kann ich ja auch SetDlgItemText() verwenden. Das war der beste Tipp Danke!!!!.