我是 Windows 编程新手,一直受困于软件的遗留代码,很难找出原因。目前的问题是我有一个 SourceHDC,我将其转储到 ScreenDC(HWND) 和内存 DC 上。 screenDC 的行为很奇怪,当应用程序将我的 SourceHDC 发送为黑色(我转储它)时,它不会在 ScreenDC 上传输任何黑色的东西,但是在我的 memoryDC 上我得到黑色矩形。
传递的BitBlt操作是SRC_COPY
这可能是什么原因?如何进一步调试。请指教。这可能是因为阿尔法。如果是的话,我如何确保在我的内存中进行 alpha 复制 DC?
编辑
//mHDC is ScreenDC
//create compatible DC from mDC
HBITMAP SCREENBITMAP = CreateCompatibleBitmap(mHDC, ScreenWidth, ScreenHeight);
HDC SCREEN = CreateCompatibleDC(mHDC);
SelectObject(SCREEN, SCREENBITMAP);
//Blitting back to back and then dumping
BitBlt(mHDC, realDstRect.left, realDstRect.top, dstWidth, dstHeight, srcDC, realSrcRect.left, realSrcRect.top, SRCCOPY);
BitBlt(SCREEN, realDstRect.left, realDstRect.top, dstWidth, dstHeight, srcDC, realSrcRect.left, realSrcRect.top, SRCCOPY);
附件是转储。我注意到一个问题,第一张图像(SrcDC)在我的屏幕上显示为黑色,而这里显示为白色
SrcDC
ScreenDC
内存DC