Probleme mit CEdit-Objekt (VC++6.0/MFC)

Hallo,

ich habe ein CEdit-Element mit dem Ressourcen-Editor in
einem Dialog angelegt und habe diesem Element über den
Klassen-Assistenten eine double-Variable zugeordnet.
Wenn ich jetzt eine Zahl mit Nachkommastellen eingeben
möchte, gibt es Probleme. Ein Beispiel: Ich will 12,5
in dieses CEdit-Feld eingeben. Also tippe ich ‚1‘, dann ‚2‘
dann ‚,‘ , daraufhin springt die Eingabestelle ganz nach links vor
die vorher eingegebene ‚1‘, dann tippe ich ‚5‘ und als Ergebnis
steht dann: ‚512‘. Mit Tricks kann ich aber sehr wohl das gewollte
Ergebnis erhalten: Ich gebe ‚1‘ dann ‚2‘ dann ‚5‘ ein, gebe dann
einmal ’

Hallo walter,
sollte eigentlich funzen, aber…
ich hab auch mal ‚ne weile‘ damit gezaubert.

versuch mal:

BOOL XXXXXXXApp::InitInstance()
{

setlocale(LC_ALL, „“);

}

ist in windows uebernommen (geklaut) aus der unix welt.
da kann man uebrigens auch sowas aehnliches wie mfc machen,
aber es geht mit qt.
und dann laeuft es auf linux/unix UND windows.
nix fuer dich?

gruss digi :smile:)

Hallo digi,

über das Thema Win/MFC kontra Win/Linux/Qt haben wir ja schon
diskutiert und Du brauchst mich nicht zu „missionieren“ - ich
bin da ganz auf Deiner Seite. Aber ich habe hier ein Programm
mit VC++/MFC begonnen und das hat mittlerweile schon etwa 15000
Zeilen Code und das möchte ich jetzt (auch wenns immer noch
weh tut) mit der MFC zu Ende bringen.
Und nun zum Thema:

setlocale(LC_ALL,„german“);

steht schon in meiner CApp-Klasse,
dadurch ändert sich z.B. das Dezimaltrennzeichen von ‚.‘ in
‚,‘ , das oben beschriebene komische Verhalten der CEdit-Objekte
an sich bleibt aber gleich.

Apropos plattformübergreifende, konsistente und gut designte
Klassenbibiliothek zur GUI-Programmierung, schau da mal auf

http://vcf.sourceforge.net/index.html

nach, das sieht auf den ersten Blick auch ganz interessant aus.
Ansonsten danke für die Antwort und ich hoffe, wir schreiben uns
demnächst wieder unter besseren „Umständen“,

Gruss, Walter

ich habe ein CEdit-Element mit dem Ressourcen-Editor in
einem Dialog angelegt und habe diesem Element über den
Klassen-Assistenten eine double-Variable zugeordnet.

Hallo!

Poste mal den betreffenden Inhalt des Dialogkonstruktors und von DoDataExchange( … )!

Grüsse Safog

Hallo Safog,

entschuldige meine späte Antwort, war in Urlaub.

Hier der Dialogkonstrukor:

CDialog5::CDialog5(CWnd* pParent /*=NULL*/)
: CDialog(CDialog5::IDD, pParent)
{
//{{AFX_DATA_INIT(CDialog5)

m_dHDHRLAENGE = 0.0; // Member-Variable f. CEdit-Element
// verhält sich normal

m_dAAZP = 0.0; // Member-Variable f. CEdit-Element
// verhält sich ungewöhnlich

//}}AFX_DATA_INIT
}

void CDialog5::smiley:oDataExchange(CDataExchange* pDX)
{
CDialog::smiley:oDataExchange(pDX);
//{{AFX_DATA_MAP(CDialog5)

DDX_Text(pDX, IDC_5HDHRLAENGE, m_dHDHRLAENGE);

DDX_Text(pDX, IDC_5AAZP, m_dAAZP);
//}}AFX_DATA_MAP
}

In der …rc-Datei:

EDITTEXT IDC_5HDHRLAENGE,46,85,40,12,ES_RIGHT
| ES_AUTOHSCROLL

EDITTEXT IDC_5AAZP,341,242,35,12,ES_RIGHT
| ES_AUTOHSCROLL

Hier sind keine Unterschiede zu entdecken, und trotzdem
verhalten sich die beiden Edit-Felder unterschiedlich bei der
Eingabe von Zahlen mit Nachkommastellen.

Schöne Grüsse, Walter