integer ausgeben
-
Ev. ist es besser gleich die std::wstring / std::wstringstream zu verwenden.
Dann entfällt das Konvertieren in ein Wide-String.
-
Ich bin Programmierer! Ich kann aber kein C++. Ich muss auch nur wissen wie man einen integer mit TextOut in einem Fenster ausgibt. Mehr will ich ja gar nicht wissen.
Hat jemand eine Idee?
-
datatom schrieb:
mit TextOut in einem Fenster ausgibt
Aha. Framework?
-
Ich möchte das SDK Beispiel AmCap anpassen. Dazu verwende ich Visual C++ 2010 Express. Da ich keine Ahnung habe von dem ganzen Windows-Kram, weiß ich auch nicht, ob es zum Framework zählt
Das Fenster wird auf jeden Fall mit CreateWindowEx angelegt.
-
TextOut aus dem WinAPI erwartet einen LPCTSTR, d.h. TCHAR const *. TCHAR ist abhängig von den Präprozessordefinitionen, die dein Projekt dem Compiler mitgibt, entweder char oder wchar_t (siehe dazu http://msdn.microsoft.com/de-de/library/c426s321(v=vs.80).aspx ).
Wenn du dich auf eine Variante des WinAPI festlegen kannst: Ist TCHAR char, kannst du std::string und std::stringstream benutzen; ist TCHAR wchar_t entsprechend std::wstring und std::wstringstream. Musst du beides unterstützen, dann empfiehlt sich etwas wie
typedef std::basic_string <TCHAR> tstring; typedef std::basic_stringstream<TCHAR> tstringstream;
Benutzung wie gehabt.
Ansonsten: Wenn du mit dem WinAPI programmieren willst, ist es kein haltbarer Zustand, von diesem ganzen Windows-Kram keine Ahnung zu haben. Ich rate dir dringendst, dich mit seinen Konzepten genauer zu befassen. Wichtig auch: Nackte C-APIs sind ein Albtraum in Bezug auf Exceptionsicherheit. Ziehe in Erwägung, Handles in RAII-Containern (beispielsweise shared_ptr mit geeignetem Deleter) zu verstauen.
-
Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ (auch C++0x) in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
@seldon: er wollte ja kein C++.
Kannst dann itoa() oder sprintf() nehmen. Dazu gibt's reichlich Beispiele im Internet.
-
datatom schrieb:
Ich bin Programmierer!
Ah und was programmierst du denn, deinen Videorekorder?
-
Bitte keine dummen Beiträge
-
[Rewind] schrieb:
@seldon: er wollte ja kein C++.
Wann hat er Dir das denn verraten?
-
Ich habe jetzt eine Lösung gefunden , wie ich einen Integerwert ( unicode ) mit TextOut ausgeben kann:
int r = 350; wchar_t buffer[65]; _itow( r, button, 10); TextOut(hdc, 100, 100, (LPCWSTR)buffer, sizeof(buffer));
Quelle: http://msdn.microsoft.com/de-de/library/yakksftt.aspx
Vermutung:
Die 10 am Ende von _itow bedeutet wohl, dass r in dem String als dezimale "Zahl" dargestellt wird.Hat jemand noch eine Ergänzung bzw. Korrektur?
-
Ja: verwende die sichere Version dieser Funktion: _itow_s() Damit wird überprüft, ob der Buffer groß genug ist, um gefährliche Pufferüberläufe zu vermeiden.
Belli schrieb:
[Rewind] schrieb:
@seldon: er wollte ja kein C++.
Wann hat er Dir das denn verraten?
Die Frage ist nicht wann sondern wie. Indem er die ersten Vorschläge zu Standard C++ (Strings und Stringstreams) freundlich abgelehnt hat.