GetDC() funktioniert nicht
-
Hallo ich arbeite gradean einem Projekt. Und irgentwie funktioniert GetDC() bei mir nicht.
ich zeichne etwas immer neu wenn die Maus bewegt wird.
case WM_MOUSEMOVE: graph = (tobGraph*)GetWindowLong(hwnd, GWL_USERDATA); GetCursorPos(&pt); ScreenToClient(hwnd, &pt); //funktioniert wunderbar x = pt.x; y = pt.y; if((x<70) || (y>graph->ypixel+10) || (x>(70+graph->xpixel)) || (y<10)) { lstrcpy(XCord, TEXT("-")); lstrcpy(YCord, TEXT("-")); } else { _stprintf_s(XCord, TEXT("%g"), graph->elements[x-70].x); _stprintf_s(YCord, TEXT("%g"), graph->elements[x-70].y); } _stprintf_s(temp, 256, TEXT("X: %s Y: %s "), XCord, YCord); //an dieser stelle sieht hwnd valide aus //paint it -.- hdc = GetDC(hwnd); //hier ist hwnd 0xfefefefe if(hdc == NULL) x = GetLastError(); //error 1400 (invalid window handle)Das Problem ist jetzt ich nehme hwnd einfach aus der Wndproc ohne es zu verändern trotzdem sagt mir GetDC() es sei ein invalides handle. Wenn ich es kurz vor GetDC() im debugger anguck sieht es normal aus. Danach jedoch ist es 0xfefefefe und hdc ist == NULL.
Ich habe keine ahnung wieso GetDC nicht mit einem handle klarkommt das windows mir ja über die wnd proc gibt.Wenn ich den hdc verwende schmiert mein programm ab :p
mfg tobZel
-
fehler gefunden

_stprintf_s(temp, 256, TEXT("X: %s Y: %s "), XCord, YCord);temp ist hier nur 128 groß nicht 256. Irgentwie hat _stprintf_s dadurch alle anderen varis überschrieben oO. Seltsam zumal der string ja nur knapp 20 zeichen groß war.
naja egal ty

-
tobZel schrieb:
fehler gefunden

_stprintf_s(temp, 256, TEXT("X: %s Y: %s "), XCord, YCord);temp ist hier nur 128 groß nicht 256. Irgentwie hat _stprintf_s dadurch alle anderen varis überschrieben oO. Seltsam zumal der string ja nur knapp 20 zeichen groß war.
Das kann man einfach verhindern in dem man den Compiler die Größe eines statischen Puffers übergibt, doer eben die Größe per const oder Variable, die man definiert hat.
_stprintf_s(temp, _countof(temp), TEXT("X: %s Y: %s "), XCord, YCord);