내가 GDI를 사용하고 + 윈도우 스냅 샷을 코드는 다음과 같습니다WinAPI/GDI : 대형 윈도우의 스냅 샷에 작업 표시 줄이 포함되어있는 이유는 무엇입니까?
있는 hDC 함께 이전에 설정되어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);
:
hWnd=CreateWindowEx(...); hDC=GetDC(hWnd);
이 작은 창 완벽하게 작동하지만, 나는 를 창은 더 큰하려고하면 화면보다, 그 결과는 다음과 같습니다
즉, 작업 표시 줄이
을 받고있다 구원 받았다. 뭐라 구요?
저는 BitBlt 대신 PrintWindow를 시도했습니다. 작업 표시 줄이 없지만 창 내용이 없습니다. ( – anon
아직 확실하지 않지만 "픽셀 소유권 테스트"와 관련 있다고 생각합니다. http://www.opengl.org/resources/ faq/technical/rasterization.htm # rast0070 (그 창에서 OpenGL을 사용하고 있기 때문에) – anon