Variablen Ausgeben mit TextOut und sprintf
-
Hi,
Ich habe mal wieder ein Problem mit der WinAPI und kann echt keinen Fehler entdecken. Es handelt sich um einen Laufzeitfehler der anscheinend durch sprinft verursacht wird:HDC hdc; char* COORDINATES; switch(message) { case WM_MOUSEMOVE: { int x,y; x = LOWORD(lParam); y = HIWORD(lParam); sprintf(COORDINATES,TEXT("(%i , %i )"), x, y); hdc = GetDC(hWnd); TextOut(hdc, 0, 0, COORDINATES, strlen(COORDINATES)); ReleaseDC(hWnd, hdc); return 0; }COORDINATES is used without beeing defined. Ich deklariere COORDINATES ja und weise ja auch einen Wert per sprintf zu. Ich weiß grad echt nicht was da falsch sein soll.

Ich hoffe ihr könnt helfen
-
char* COORDINATES;Du deklarierst damit einen Zeiger namens COORDINATES.
Der Zeiger zeigt also irgendwo in den Speicher rein.
Wie wär's daher, wenn du COORDINATES erst mal Speicher zuweist, nämlich so:COORDINATES = malloc (1024)oder reservierst dir gleich bei dir Variablendeklaration am Anfang a bisserl Ram:
char COORDINATES[1024];Des 1024 ist natürlich nur ein willkürlich von mir gewählter Wert. Ich weiß ja net, wie viel Platz du später evtl. noch brauchen wirst.
In deinem Fall schreibt also sprintf() irgendwo in den Speicher rein, je nachdem auf welchen Wert dein Zeiger COORDINATES gerade zeigt, da die Variable nicht initialisiert ist. Da wird sich Windows natürlich drüber freuen und haut dir erst mal nen Laufzeitfehler um die Ohren. ^^
Schönen Gruß und nen guten Rutsch ins neue Jahr 2008 ! :xmas1:
Xzi-bit
-
DANKKEEEEEE
Gleichfalls guten Rutsch
-
Übrigens sollte man das Zeichnen nur unter WM_PAINT abhandeln.