这代码是我自己东拼西凑的,只知道运行正常,请问这种写法正确么?有什么问题、缺陷么?
比如是不是得保存旧对象,然后给他恢复?怎么改呢? HDC hMainDC = ::GetDC(hWnd);
HDC hMemoryDC = ::CreateCompatibleDC(hMainDC);
HDC hBitmapDC = ::CreateCompatibleDC(hMemoryDC); HBITMAP hMainSurface = ::CreateCompatibleBitmap(hMainDC, 800, 600);
HBITMAP hBitmap1 = (HBITMAP)LoadImageA(NULL, "test.bmp", IMAGE_BITMAP, 64, 64, LR_LOADFROMFILE);
HBITMAP hBitmap2 = (HBITMAP)LoadImageA(NULL, "test.bmp", IMAGE_BITMAP, 64, 64, LR_LOADFROMFILE); while (TRUE)
{
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if (msg.message == WM_QUIT)
break; TranslateMessage(&msg);
DispatchMessage(&msg);
} // 绘制主画布
{
::SelectObject(hMemoryDC, hMainSurface);
::BitBlt(hMainDC, 0, 0, 800, 600, hMemoryDC, 0, 0, SRCCOPY);
} // 绘制hBitmap1
{
::SelectObject(hBitmapDC, hBitmap1);
::BitBlt(hMemoryDC, 100, 100, 64, 64, hBitmapDC, 0, 0, SRCCOPY);
} // 绘制hBitmap2
{
::SelectObject(hBitmapDC, hBitmap2);
::BitBlt(hMemoryDC, 200, 200, 64, 64, hBitmapDC, 0, 0, SRCCOPY);
} Sleep(60);
} ::DeleteObject(hBitmap2);
::DeleteObject(hBitmap1);
::DeleteObject(hMainSurface);
::DeleteDC(hBitmapDC);
::DeleteDC(hMemoryDC);
::ReleaseDC(hWnd, hMainDC);