CEdit stammt von CWnd ab, also hat es eine Memberfunktion namens GetWindowText
, die Sie aufrufen können, um den Text in CEdit abzurufen, und dann in den numerischen Typ int
oder double
umwandeln - je nachdem, was Sie vom Benutzer eingeben müssen:
Neben der bereits erwähnten GetWindowText-Methode können Sie sie auch über DDX an einen Integer / Unsigned Integer / Double / Float-Wert binden. Versuchen Sie Folgendes:
%Vor%wobei m_iNumber ein Mitglied Ihrer CYourAwesomeDialog-Klasse ist.
Sie müssen
anrufen %Vor%um die Werte aus den Controls in die Variablen zu schreiben. Rufen Sie
auf %Vor%Um es anders herum zu tun - von den Variablen in den Kontrollen.
BEARBEITEN (Bonus):
Beim erneuten Lesen meiner Antwort habe ich bemerkt, dass UpdateData (...) eine BOOL-Variable benötigt - korrigiert. Also hatte ich eine Idee für Leute, die Lesbarkeit mögen. Da ich immer verwirrt war, welcher Anruf in welche Richtung ging, könnte man ein enum einführen, um es lesbarer zu machen, so (vielleicht in stdafx.h oder einem zentralen Header):
%Vor%und du müsstest einfach schreiben:
%Vor%oder
%Vor%Wenn Sie diese Funktionalität regelmäßig benötigen, sagen Sie in mehreren Dialogen, dann können Sie auch Ihre eigene CEdit-abgeleitete Klasse für das Abrufen, Einstellen und Validieren ableiten.
%Vor%Stellen Sie in etwa sicher, dass die Nachrichtenzuordnung alle anderen Nachrichten an das übergeordnete CEdit übergibt. Sie können es erweitern, um anpassbare untere und obere Grenze und Dezimalstellen Einstellung zu haben.