You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LoadImage加载磁盘位图返回NULL,GetLastError返回0求排查

问题排查与解决

  1. 修正路径问题
    你的sample.bmp与test.exe在同一目录下,使用绝对路径容易出现拼写错误或权限问题,直接改用相对路径即可:

    HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, "sample.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
    
  2. 正确获取错误码
    MessageBox会覆盖GetLastError()的返回值,必须在LoadImage调用后立即获取错误码才能得到真实结果:

    HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, "sample.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
    if (hBitmap == NULL)
    {
        DWORD errCode = GetLastError();
        char errMsg[256];
        sprintf(errMsg, "LoadImage失败,错误码:%lu", errCode);
        MessageBox(NULL, errMsg, "错误", MB_OK);
        return 0;
    }
    
  3. 处理位图格式兼容问题
    LoadImage默认不支持带Alpha通道的32位BMP,若你的sample.bmp是这类格式,需要添加LR_CREATEDIBSECTION标志:

    HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, "sample.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
    

    也可以用系统画图程序重新保存sample.bmp为标准24位格式后再测试。

  4. 修复静态控件显示问题
    你创建的静态控件初始尺寸为(0,0),即使位图加载成功也无法显示。加载位图后可获取位图尺寸并调整控件大小:

    // 加载位图后添加以下代码
    BITMAP bmpInfo;
    GetObject(hBitmap, sizeof(BITMAP), &bmpInfo);
    SetWindowPos(sampleImg, NULL, 0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, SWP_NOZORDER);
    

内容的提问来源于stack exchange,提问作者Shrehan Raj Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 07:20:33