通过memoryDC Blt'ing无法正常工作

时间:2009-12-26 17:33:20

标签: c++ gdi

HDC hdcScreen = GetDC(NULL);
HDC hdcWindow = GetDC(mWin);
HDC hdcMem = CreateCompatibleDC(hdcScreen);
if (!hdcScreen || !hdcWindow || !hdcMem){
    MessageBox(NULL, "could not locate hdc's", "Viewer", MB_ICONERROR);
}

if (!StretchBlt(hdcMem, 0, 0, 300, 300, hdcScreen, 0, 0, 300, 300, SRCCOPY)){
    MessageBox(NULL, "stretchblt failed", "Viewer", MB_ICONERROR);
}
else if (!BitBlt(hdcWindow, 0, 0, 300, 300, hdcMem, 0, 0, SRCCOPY)){
    // error
    MessageBox(NULL, "stretchblt failed", "Viewer", MB_ICONERROR);
}

ReleaseDC(NULL, hdcScreen);
ReleaseDC(mWin, hdcWindow);
ReleaseDC(mWin, hdcMem);

从Screen到Window单次调用StretchBlt工作正常,但上面没有。 任何有用的提示?

[编辑] 没有错误被触发,所以一切似乎都运行正常,但是与mWin相关的窗口是空白的。

1 个答案:

答案 0 :(得分:3)

您需要使用SelectObject创建位图并将其选择到内存DC中。