GDI+ を使用してウィンドウのスナップショットを取得しています。コードは次のとおりです。
CComBSTR bstrfname (fname);
HDC hdc = CreateCompatibleDC (hDC);
HBITMAP hbmp = CreateCompatibleBitmap (hDC, CFG_WIDTH, CFG_HEIGHT);
HBITMAP hbmp0 = (HBITMAP)SelectObject (hdc, hbmp);
BitBlt (hdc, 0, 0, CFG_WIDTH, CFG_HEIGHT, hDC, 0, 0, SRCCOPY);
Gdiplus::Bitmap *bmp = new Gdiplus::Bitmap (hbmp, NULL);
CLSID encoderClsid; GetEncoderClsid (L"image/png", &encoderClsid);
bmp->Save (bstrfname, &encoderClsid, NULL);
delete bmp;
SelectObject (hdc, hbmp0);
DeleteObject (hbmp);
DeleteDC (hdc);
ここで、hDC は前に次のように設定されます。
hWnd=CreateWindowEx(...); hDC=GetDC(hWnd);
これは小さなウィンドウでは完全に機能しますが、画面よりも大きなウィンドウを試してみました。
つまり、タスクバーも保存されています。何が与えますか?