【问题标题】:Loading a bmp from resource从资源加载 bmp
【发布时间】:2019-01-15 21:39:46
【问题描述】:

我正在尝试从资源而不是文件位置加载位图。我正在使用visual stuidos,并且已将相同的位图导入rc。当我尝试使用资源版本时,LoadImage 返回 NULL。我的语法错了吗?还是我错过了其他步骤?请指出我正在努力学习的正确方向。提前致谢。

HBITMAP mhbitmap;

// Loading from a file works
mhbitmap = (HBITMAP)LoadImage(NULL, L"sblue.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
mpiccontrol.SetBitmap(mhbitmap);
if (mhbitmap == NULL) {
    MessageBox(L"null", L"from file", NULL);
}

从文件版本加载显示图像,但资源版本不显示图像。

mpiccontrol.SetBitmap(mhbitmap);

// My attempt at loading from resource
mhbitmap = (HBITMAP)LoadImage(NULL, MAKEINTRESOURCE("IDB_BITMAP1"), IMAGE_BITMAP, 0, 0, 0);
if (mhbitmap == NULL) {
    MessageBox(L"null", L"from rc", NULL);
}

mpiccontrol.SetBitmap(mhbitmap);

【问题讨论】:

  • 您必须将LoadImage的第一个参数设置为包含资源的可执行文件的实例。
  • @john 谢谢你使用 AfxGeIinstancehandle() 解决了这个问题

标签: c++ visual-studio-2015 mfc loadimage


【解决方案1】:

MAKEINTRESOURCE 宏接受整数资源 ID,因此它应该是 MAKEINTRESOURCE(IDB_BITMAP1),其中 IDB_BITMAP1 是资源标识符宏(可能来自 resource.h)。您还应该致电GetLastError 找出失败原因。

【讨论】:

  • 我做了去掉引号的更正,但还是不显示图像。 “resource.h”确实有 IDB_BITMAP1 的定义。 GetLastError() 告诉我最后一次操作已成功完成。我还缺少什么吗?谢谢
  • 好像你的问题在别处。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多