BitBlt bug with Aero

Seems that Bitblt is not working well when Vista theme (aero) is
enabled.
When I try to copy a portion of the screen, the result is distorted.
Note that the same result happened with Alt+Print screen in earlier
Vista builds but is now solved. Are there any new bitblt flags to be
used now?

Following code demonstrates the problem:

#include "stdafx.h"
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
HWND wnd = ::GetDesktopWindow();
HDC hdc = ::GetDC(wnd);

HDC memDC = ::CreateCompatibleDC(hdc);

HBITMAP bm = ::CreateCompatibleBitmap(hdc, 1000,1000);

HBITMAP oldBM = (HBITMAP)::SelectObject(memDC, bm);
::BitBlt(memDC,0,0,1000,1000, hdc,0,0, SRCCOPY);

::OpenClipboard(wnd);
::EmptyClipboard();
::SetClipboardData(CF_BITMAP, bm);
::CloseClipboard();

::SelectObject(memDC,oldBM);
::ReleaseDC(wnd,hdc);
return 0;
}



After running this code, you can paste the result into mspaint for
example and see the problem.

Any idea?
 

My Computer

Top