c ++,位图不会显示?

时间:2013-04-11 00:09:37

标签: c++ winapi bitmap

单击鼠标左键时,不会显示位图。 我正在使用visual c ++ express

HDC DC, memDC;

switch(message) {
case WM_CREATE:
        hBit1 = LoadBitmap(hInst, "C:\New folder (2)\MyBP1.bmp");
        break;

case WM_LBUTTONDOWN:
            DC = GetDC(hwnd);
            memDC = CreateCompatibleDC(DC);
        SelectObject (memDC, hBit1);
        BitBlt(DC, LOWORD(lParam), HIWORD(lParam), 27, 59, memDC, 0, 0, SRCCOPY);
        ReleaseDC(hwnd, DC);
        DeleteDC(memDC);
        break;

我不确定代码究竟是什么问题。 在Visual c ++ express中没有显示错误 如果代码完全错误,有人会指出我正确的方向

1 个答案:

答案 0 :(得分:6)

LoadBitmap仅用于加载作为可执行文件或DLL中的资源存储的位图。

要从BMP文件加载位图,您希望将LoadImageLR_LOADFROMFILE标志一起使用,如下所示:

bmp = (HBITMAP)LoadImage(0, filename, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);

顺便说一句,你可能不想直接在WM_LBUTTONDOWN回复时进行显示。相反,您通常希望记录位置,可能设置一个标志以指示应显示位图,并调用InvalidateRect使客户矩形无效 - 然后执行实际绘图以响应WM_PAINT