使用 LoadImage() 函数加载位图时出现问题
Problem with loading a bitmap with the LoadImage() function
我在 Windows CE 2013 上用 C++ 开发了一个应用程序。
我想从文件加载位图并在屏幕上显示它。
问题是 LoadImage()
函数总是 returns NULL
。
HDC hdcOkno;
hdcOkno = GetDC(hWnd);
HBITMAP hbmObraz;
hbmObraz = (HBITMAP)LoadImage(NULL, L"C:\Users\tykab\OneDrive\Pulpit\bitmapy\background_blue.bmp", IMAGE_BITMAP, 0, 0, NULL);
BITMAP bmInfo;
GetObject(hbmObraz, sizeof(bmInfo), &bmInfo);
BitBlt(hdcOkno, 50, 50, bmInfo.bmWidth, bmInfo.bmHeight, hdcOkno, 0, 0, SRCCOPY);
更新:
由于您在 Windows CE 平台上工作,LoadImage()
无法从文件加载位图。您应该改用 SHLoadDIBitmap()
。
原答案:
name
Type: LPCTSTR
...
If the hinst
parameter is NULL and the fuLoad
parameter omits the LR_LOADFROMFILE
value, the lpszName
specifies the OEM image to load...
...
If the fuLoad
parameter includes the LR_LOADFROMFILE
value, lpszName
is the name of the file that contains the stand-alone resource (icon, cursor, or bitmap file). Therefore, set hinst
to NULL.
您没有在 fuLoad
参数中指定 LR_LOADFROMFILE
标志。加载文件时应将最后一个参数设置为以下内容:
LR_DEFAULTSIZE | LR_LOADFROMFILE
如评论中所述,检查 GetLastError()
错误始终是个好主意。
我在 Windows CE 2013 上用 C++ 开发了一个应用程序。
我想从文件加载位图并在屏幕上显示它。
问题是 LoadImage()
函数总是 returns NULL
。
HDC hdcOkno;
hdcOkno = GetDC(hWnd);
HBITMAP hbmObraz;
hbmObraz = (HBITMAP)LoadImage(NULL, L"C:\Users\tykab\OneDrive\Pulpit\bitmapy\background_blue.bmp", IMAGE_BITMAP, 0, 0, NULL);
BITMAP bmInfo;
GetObject(hbmObraz, sizeof(bmInfo), &bmInfo);
BitBlt(hdcOkno, 50, 50, bmInfo.bmWidth, bmInfo.bmHeight, hdcOkno, 0, 0, SRCCOPY);
更新:
由于您在 Windows CE 平台上工作,LoadImage()
无法从文件加载位图。您应该改用 SHLoadDIBitmap()
。
原答案:
name
Type:
LPCTSTR
...
If the
hinst
parameter is NULL and thefuLoad
parameter omits theLR_LOADFROMFILE
value, thelpszName
specifies the OEM image to load......
If the
fuLoad
parameter includes theLR_LOADFROMFILE
value,lpszName
is the name of the file that contains the stand-alone resource (icon, cursor, or bitmap file). Therefore, sethinst
to NULL.
您没有在 fuLoad
参数中指定 LR_LOADFROMFILE
标志。加载文件时应将最后一个参数设置为以下内容:
LR_DEFAULTSIZE | LR_LOADFROMFILE
如评论中所述,检查 GetLastError()
错误始终是个好主意。