Bildschirmlupe
-
Moin!
Win XP HOME, Microsoft Visual Studio .net Ver. 2003
Ich baue gerade ein Mini-Mini-Tool: Eine Bildschirmlupe
Per Timer (InvalidateRect,UpdateWindow) aktualisiere ich mein Lupen Fenster.
Mein Paintfunkt. sieht zusammengefasst so aus:
case WM_PAINT: [...] hdcDesk=GetDC(hDesktop); [...] hdc=BeginPaint(hwnd,&ps); StretchBlt(hdc,[...],hdcDesk,[..],SRCCOPY); EndPaint(hwnd,&ps); ReleaseDC(hwnd,hdcDesk); return 0;So nun stand ich aber vor dem Problem, dass die Lupe das eigene Lupenfenster auch vergrößert, wenn man mit dem Cursor sich über diesen befindet. Daher kam ich auf die Idee, das Zwischenbild in ein extra HDC zu packen, die ensprechende Fläche des Fensters einzufärben und schließlich das Bild in mein Lupenfenster zu BLTen:
case WM_PAINT: [...] hdcDesk=GetDC(hDesktop); hdcDesk2=CreateCompatibleDC(hdcDesk); BitBlt(hdcDesk2,[...],hdcDesk,[...],SRCCOPY); FillRect(hdcDesk2,[...]); [...] hdc=BeginPaint(hwnd,&ps); StretchBlt(hdc,[...],hdcDesk2,[..],SRCCOPY); EndPaint(hwnd,&ps); ReleaseDC(hwnd,hdcDesk); ReleaseDC(hwnd,hdcDesk2); return 0;So jetzt wird das Fenster aber nicht mehr aktualisiert und das entsprechende Rechteck des Lupenfensters ist auch net eingefärbt. Was stimmt denn da nicht?
mfg killsmaker
PS: Sry, für die Verschiebung im Code_Tag
:xmas1: :xmas1: :xmas1: :xmas1: :xmas1: :xmas1: :xmas1:
-
Nach CreateCompatibleDC brauchst du noch einen Aufruf von CreateCompatibleBitmap. Das so erzeugte Bitmap musst du dann mit SelectObject in deinen DC selektieren (sonst ist er 1x1 Pixel groß und schwarz-weiß)