使用 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()

原答案:

来自LoadImage documentation:

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() 错误始终是个好主意。