LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
static HBITMAP hBmp;
switch(uMsg) {
case WM_CREATE:
{
HDC hDC:
HDC hMemDC;
hDC = GetDC(hWnd);
hBmp = CreateCompatibleBitmap(hDC, 200, 100);
hMemDC = CreateCompatibleDC(hDC);
SelectObject(hMemDC, hBmp);
SelectObject(hMemDC, GetStockObject(NULL_PEN));
PatBlt(hMemDC, 0, 0, 200, 100, WHITENESS);
DeleteDC(hMemDC);
ReleaseDC(hWnd, hDC);
return 0;
}
case WM_KEYDOWN:
{
HDC hDC;
HDC hMemDC;
hDC = GetDC(hWnd);
hMemDC = CreateCompatibleDC(hDC);
SelectObject(hMemDC, hBmp);
SelectObject(hMemDC, GetStockObject(BLACK_PEN));
Rectangle(hMemDC, 10, 10, 120, 60);
DeleteDC(hMemDC);
ReleaseDC(hWnd, hDC);
return 0;
}
case WM_PAINT:
{
HDC hDC;
HDC hMemDC;
PAINTSTRUCT ps;
hDC = BeginPaint(hWnd, &ps);
hMemDC = CreateCompatibleDC(hDC);
SelectObject(hMemDC, hBmp);
BitBlt(hDC, 0, 0, 200, 100, hMemDC, 0, 0, SRCCOPY);
DeleteDC(hMemDC);
EndPaint(hWnd, &ps);
return 0;
}
}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}