【问题标题】:CreateCompatibleBitmap() returns black HBITMAPCreateCompatibleBitmap() 返回黑色 HBITMAP
【发布时间】:2013-05-01 19:10:52
【问题描述】:

您好 Stack Overflow 用户。看来我在以下代码中没有正确使用 CreateCompatibleBitmap():

#include <windows.h>
using namespace std;
int main() {HDC hdc=GetDC(HWND_DESKTOP); HDC MemDC=CreateCompatibleDC(hdc);
    HBITMAP hBit=CreateCompatibleBitmap(hdc,1366,768);
    SelectObject(MemDC,hBit);
    BitBlt(hdc,0,0,1366,768,MemDC,0,0,SRCCOPY); //Screen turns black
    DeleteObject(hBit);
    ReleaseDC(HWND_DESKTOP,hdc);
    ReleaseDC(NULL,MemDC);
    DeleteDC(MemDC);
    DeleteDC(hdc);
}

我以为 CreateCompatibleBitmap() 是返回 Desktop DC 的 1366x768 部分,但是在 BitBlt() 之后显示黑屏。我没有使用 CreateCompatibleBitmap,而是将位图文件加载到 hBit 中,一切都如愿以偿,所以我猜问题仅出在 CreateCompatibleBitmap() 上。我是否正确使用此功能?有什么我没有做但我应该做的事情吗?

【问题讨论】:

    标签: c++ winapi gdi


    【解决方案1】:

    CreateCompatibleBitmap 为您创建了位图,但不应使用桌面的一部分或其他任何东西对其进行初始化。您在没有初始化的情况下将其放入桌面,因此黑色并不意外。如果你想让它保持桌面图像,你需要从桌面 DC 到 DC 并选择创建的位图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多