F
LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
static HDC hdcScreenBuffer;
static RECT rcClient;
switch (iMsg)
{
case WM_CREATE:
HDC hdc = GetDC(hwnd);
SelectObject(hdcScreenBuffer, CreateCompatibleBitmap(hdc) );
GetClientRect(hwnd,&rcClient);
FillRect(hdcScreenBuffer,&rcClient,(HBRUSH)GetStockObject(WHITE_BRUSH) );
ReleaseDC(hdc);
return 0;
case WM_PAINT:
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
BitBlt(hdc,0,0,rcClient.right,rcClient.bottom,hdcScreenBuffer,0,0,SRCCOPY);
EndPaint(hwnd, &ps);
return 0;
case WM_DESTROY:
DeleteDC(hdcScreenBuffer);
PostQuitMessage(0);
return 0;
}
return DefWindowProc (hwnd, iMsg, wParam, lParam) ;
}
Jetzt solltest du von irgendwo aus WndProc heraus direkt in hdcScreenBuffer zeichnen können, also ohne GetDC, BeginPaint oder so!
Ich habe den Code nicht ausprobiert, aber so ungefähr sollte es aussehen.
[edit]Ich hab WM_PAINT nochmal korrigiert, das hatte ich nen Fehler drin![/edit]
[ Dieser Beitrag wurde am 28.12.2002 um 12:26 Uhr von flenders editiert. ]