c ++,位图不会显示?

use*_*092 1 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;
Run Code Online (Sandbox Code Playgroud)

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

Jer*_*fin 6

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

要加载从BMP文件的位图,您要使用LoadImageLR_LOADFROMFILE标志,是这样的:

bmp = (HBITMAP)LoadImage(0, filename, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
Run Code Online (Sandbox Code Playgroud)

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