1

单击鼠标左键时不会显示位图。我正在使用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中没有显示错误如果代码都错了,有人会指出我正确的方向吗

4

1 回答 1

6

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

要从 BMP 文件加载位图,您需要使用LoadImage标志LR_LOADFROMFILE,如下所示:

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

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

于 2013-04-11T03:50:41.023 回答