CString.Format in SetWindowText -> C2664
-
Hallo,
bekanntermaßen liefert CString.Format(...) keine Rückgabe da void.
Zusammen mit SetWindowText gibts dann den C2664 Fehler weil void nicht in LPCTSTR konvertiert werden kann.
Folglich muß man immer
sBuffer.Format("%d", lValue); m_Control.SetWindowText(sBuffer);
schreiben.
Kann man den Zwischenschritt
sBuffer.Format("%d", lValue);
nicht weglassen und das direkt im Argument von SetWindowText wandeln ohne C2664 zu erhalten?
-
Nein schau doch was Format als Wert zurück gibt. Nur wenn Format ein CString liefern würde oder eine Referenz würde das gehen.
-
Hallo,
ja ich weiß daß Format nichts liefert.
Hätte ja sein können daß eine Möglichkeit existiert. Alles weiß ich ja auch nicht.Danke.
-
Wenn m_Control eine Dialog-Id hat, macht SetDlgItemInt genau das.
Erste Wahl wäre aber der DDX-Mechanismus zum Dialogdatenaustausch.
-
Marcus Humann schrieb:
Wenn m_Control eine Dialog-Id hat, macht SetDlgItemInt genau das.
Erste Wahl wäre aber der DDX-Mechanismus zum Dialogdatenaustausch.
Stimmt das geht ja auch (total vergessen) und wäre auch umsetzbar.
Warum wäre DDX-DataExchange erste Wahl?
-
Zumindest in Dialogfeldern ist DDX der "normale", vorgesehene Weg für den Datenaustausch zwischen Controls und Variablen.
Der direkte Aufruf von SetWindowText/SetDlgItemInt ist weniger elegant, kann in Sonderfällen aber auch sinnvoll/notwendig sein.
-
Nun in diesem Fall werden Statics zur reinen Anzeige von Informationen genutzt (quasi unidirektional). Mit UpdateData(bool) samt zusätzlicher Value Membervariable arbeite daher nicht.