0
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 to Window對StretchBlt的單個調用可以正常工作,但上面沒有。 任何有用的提示?通過內存直接播放直流不起作用
[編輯] 沒有錯誤被觸發,所以一切似乎工作正常,但與mWin相關的窗口是空白的。
工作正常! HBITMAP hBit = CreateCompatibleBitmap(hdcWindow,300,300); \ SelectObject(hdcMem,hBit); \ .. DeleteObject(hBit); – Default 2009-12-26 17:49:45
是的。修復你的清理代碼,ReleaseDC(mWin,hdcMem)是錯誤的。使用DeleteDC()。在刪除hdcMem之前,您必須還原舊的位圖。 – 2009-12-26 17:52:11