加载resource里的图片

C++语言 码拜 7年前 (2017-05-08) 1845次浏览
需要加载resource里的图片,得到它的路径path,填到下面的函数中,ID为IDB_BITMAP1或IDB_PNG1都行,不要CBitmap等MFC的函数,问一下怎么样解决呢?急啊
HBITMAP hBmp = (HBITMAP)::LoadImage(NULL, path, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE | LR_DEFAULTCOLOR);
解决方案

5

引用:
Quote: 引用:
Quote: 引用:
Quote: 引用:
Quote: 引用:
Quote: 引用:
Quote: 引用:
Quote: 引用:

加载rc的文件统一根据资源ID判断

怎么样操作呢?可否详细一点?
怎么样得到图片路径path呢?
resource.h
#define IDB_BITMAP1                     102

就是path那里 ID 强转指针,然后后面好像要写个什么表示是rc资源  你本人查查吧,本人很久没用过这种写法了

auto p = MAKEINTRESOURCE(IDB_BITMAP1);
不知道通过p怎么样转化为path,本人已近找了半天了,没找到,能帮忙找找吗?谢谢!

C 的强制类型转换啊

HBITMAP hBmp = (HBITMAP)::LoadImage(NULL, MAKEINTRESOURCE(IDB_BITMAP1), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE | LR_DEFAULTCOLOR);

auto p = MAKEINTRESOURCE(IDB_BITMAP1);
PCWSTR p1 = (PCWSTR)p;
HBITMAP hBmp = (HBITMAP)::LoadImage(NULL, p1, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE | LR_DEFAULTCOLOR);
以上两种方法都卡死了,不行啊!
怎么样是好呢?

你百度,反正就是相似这么用的,你还得指定一个flags 告诉函数,这是一个资源id才行

能不能找一下是哪个函数呢?谢谢!

就是你现在使用的这个函数

35

X:\MSDN98_1>grep -xs MAKEINTRESOURCE.*BITMAP *.c *.cpp SemWare Grep v2.0 for Win32 [Jun 12 2003]
Copyright 1996-2003 SemWare Corp. All rights reserved worldwide.
File: X:\MSDN98_1\SAMPLES\MSDN\TECHART\167\HIERDRAW.C
    hRes = FindResource(hInstance, MAKEINTRESOURCE(nBitmap), RT_BITMAP);
File: X:\MSDN98_1\SAMPLES\MSDN\TECHART\1762\W32PEN.C
                hBitmap = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BITMAP1));
                hPatBitmap = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BITMAP4));
File: X:\MSDN98_1\SAMPLES\MSDN\TECHART\2103\W32PEN.C
                hBitmap = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BITMAP1));
                hPatBitmap = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BITMAP4));
File: X:\MSDN98_1\SAMPLES\VC98\SDK\DBMSG\MAPI\ROUTE.CLI\BITMAP.C
    hresLoad = FindResource(hInst, MAKEINTRESOURCE(IDB_ENVELOPE), RT_BITMAP);
File: X:\MSDN98_1\SAMPLES\VC98\SDK\DBMSG\MAPI\SIMPLE.CLI\BITMAP.C
    hresLoad = FindResource(hInst, MAKEINTRESOURCE(IDB_ENVELOPE), RT_BITMAP);
File: X:\MSDN98_1\SAMPLES\VC98\SDK\SDKTOOLS\WINNT\DLGEDIT\DLGEDIT.C
    hresLoad = FindResource(ghInst, MAKEINTRESOURCE(idbm), RT_BITMAP);
File: X:\MSDN98_1\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.C
                                  MAKEINTRESOURCE( TTYBITMAP ) ) ;
File: X:\MSDN98_1\SAMPLES\VC98\MFC\OLE\WORDPAD\RULER.CPP
                        AfxFindResourceHandle(MAKEINTRESOURCE(nBitmapID+1), RT_BITMAP),
File: X:\MSDN98_1\SAMPLES\VC98\SDK\GRAPHICS\DIRECTX\DPSLOTS\CLIENT.CPP
                hWheelBitmap = LoadBitmap(ghInstance, MAKEINTRESOURCE(IDB_SLOTSBITMAP));
File: X:\MSDN98_1\SAMPLES\VC98\SDK\GRAPHICS\DIRECTX\MOSQUITO\MOSQUITO.CPP
    hbm = (HBITMAP) LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(lpstrResID), IMAGE_BITMAP, ddsd.dwWidth, ddsd.dwHeight, LR_CREATEDIBSECTION);
X:\MSDN98_1>

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明加载resource里的图片
喜欢 (0)
[1034331897@qq.com]
分享 (0)