在Win32 C ++中没有绘制位图

时间:2015-06-19 09:07:22

标签: c++ winapi win32gui

我有一个使用Win32的窗口,在消息处理程序中我有一个WM_PAINT的案例,因此在窗口中绘制了一个位图。然而,在没有绘制运行位图的情况下,是否有我遗漏的东西?我是否需要手动发送WM_PAINT消息?

以下是我的代码:http://pastebin.com/bi48LB0U

这是WM_PAINT案例:

case WM_PAINT:
    hDC = BeginPaint(hwnd, &ps);
    bmp = LoadBitmap(hInst, L"C:\\example.bmp");
    memDCExercising = CreateCompatibleDC(hDC);
    SelectObject(memDCExercising, bmp);
    BitBlt(hDC, 100, 100, 500, 500, memDCExercising, 0, 0, SRCCOPY);
    DeleteDC(memDCExercising);
    DeleteObject(bmp);
    EndPaint(hwnd, &ps);
    break;

1 个答案:

答案 0 :(得分:1)

您的位图无法显示,因为您对LoadBitmap的调用返回NULL,原因是 lpBitmapName 参数无效。来自LoadBitmap的文档:

  

lpBitmapName [in]:指向以null结尾的字符串的指针,该字符串包含要加载的位图资源的名称。或者,此参数可以包含低位字中的资源标识符和高位字中的零。 MAKEINTRESOURCE宏可用于创建此值。

换句话说:LoadBitmap只能加载来自Resources类型RT_BITMAP的位图(或系统提供的预定义位图)。如果需要从磁盘加载位图,请改用LoadImage

如果您需要加载普通位图文件以外的图像数据,请考虑使用Windows Imaging Component