#include <Windows.h> #include <stdlib.h> #include

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // 注册窗口类 WNDCLASS wc = {}; wc.lpfnWndProc = WndProc; wc.hInstance = hInstance; wc.lpszClassName = L"MyWindows"; RegisterClass(&wc);

// 创建窗口
HWND hwnd = CreateWindowExW(
    0,                          // 扩展风格,这里设为0
    L"MyWindows",                 // 窗口类名
    TEXT("位图"),                // 窗口标题
    WS_OVERLAPPEDWINDOW,        // 窗口样式
    CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,    // 窗口位置和大小,这里设为默认值
    nullptr,                    // 父窗口句柄,这里设为无父窗口
    nullptr,                    // 菜单句柄,这里设为无菜单
    hInstance,                  // 应用实例句柄
    nullptr                     // 其他创建参数,这里设为nullptr
);

if (hwnd == nullptr) {
    return 0;
}

ShowWindow(hwnd, nCmdShow);

// 进入消息循环
MSG msg = {};
while (GetMessage(&msg, nullptr, 0, 0)) {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}

return 0;

}

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_PAINT: { PAINTSTRUCT ps; HDC hdc, hdcMem;

    hdc = BeginPaint(hwnd, &ps);
    hdcMem = CreateCompatibleDC(hdc);

    std::wstring imagePath = L"monster.bmp"; // 位图的相对路径
    HBITMAP hBm = (HBITMAP)LoadImage(NULL, imagePath.c_str(), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
    
    if (hBm != nullptr) {
        SelectObject(hdcMem, hBm);

        BITMAP bitmap;
        GetObject(hBm, sizeof(bitmap), &bitmap);

        BitBlt(hdc, 0, 0, bitmap.bmWidth, bitmap.bmHeight, hdcMem, 0, 0, SRCCOPY);
    }

    DeleteDC(hdcMem);
    EndPaint(hwnd, &ps);
}
break;
case WM_DESTROY:
    PostQuitMessage(0);
    return 0;
}

return DefWindowProc(hwnd, msg, wParam, lParam);

}

这段代码会在窗口中绘制相对路径上的'monster.bmp'位图。请注意,确保将位图文件'monster.bmp'与可执行文件放在同一目录下,以便正确加载位图。

C++ Windows编程:使用相对路径加载位图

原文地址: https://www.cveoy.top/t/topic/C7s 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录