wie kann ich einen int64(LONGLONG) Wert in einer Messagebox ausgeben?
-
Hallo,
meine Frage: siehe "Titel"
es muss nicht unbedingt eine Messagebox sein - es kann auch ein staticText oder sonst was sein.
Mir geht es darum wie man einen Zahlenwert in einem Win32 programm auf den bildschirm bekommt.
bisher war ich nur mit der Konsole unterwegs, da kann man das ja einfach per cout>> ausgeben.
danke im voraus
-
Indem du einen char Buffer für den String kreierst und die Funktion sprintf (benötigt stdio.h) benützt:
#include <stdio.h> ... _int64 z=124; char buf[256]; sprintf(buf,"%i",z); MessageBox(hWnd,buf,0,0);das '%i' im String bedeutet, dass hier eine Integer Zahl eingesetzt wird, welche hier in der Funktion als dritter Parameter angegeben ist.
-
Ananke schrieb:
das '%i' im String bedeutet...
für __int64 wohl besser %I64d, %I64u, %I64x oder sowas.

-
Bouncer schrieb:
Ananke schrieb:
das '%i' im String bedeutet...
für __int64 wohl besser %I64d, %I64u, %I64x oder sowas.

Stimmt, _int32 ist ja äquivalent zu int, hab ich doch glatt vergessen -.-
@socco: weiter kürzel findest in der MSDN

-
das ging ja schnell ...vielen dank
gibt auch einen c++ äquivalent dazu ? Das sprintf ist zwar auch gut genug für mich aber wenn wir schon mal beim Thema sind.
-
socco schrieb:
gibt auch einen c++ äquivalent dazu?
etwa so:
__int64 z = ...; std::ostringstream ss; ss << z; MessageBox (..., ss.str().c_str() ,...);ist aber viel frickliger als mit 'sprintf' und ich bezweifle auch, dass 'stringstream' mit __int64 klar kommt.

-
leider klappt es noch nicht ganz, ich schätze ich brauche ein anderes buffer format da der compiler den char nicht in LPCWSTR convertieren kann. wenn ich den expliziet konvertiere kommt wirres unicode zeugs dabei raus. Wenn ich mit _T arbeite sagt er mir Lbuf ist nicht deklariert. Wieso Lbuf???
-
ok habe inzwischen einen Notlösung: anstelle von messageBox verwende ich messageBoxA und es scheint zu funktionieren... würde mich aber freuen wenn jemand mir erklären könnte wie ich es auch Standartfall einsetzten kann