从 Win32 项目中的 *.bmp 文件加载 HBITMAP

Posted

技术标签:

【中文标题】从 Win32 项目中的 *.bmp 文件加载 HBITMAP【英文标题】:Load HBITMAP from *.bmp file in Win32 project 【发布时间】:2013-01-15 12:41:54 【问题描述】:

是否可以仅使用 WINAPI 函数将 *.bmp 文件加载到 Win32 项目中的 HBITMAP 中?

【问题讨论】:

【参考方案1】:

是的,可以只使用标准的 win32 库。

HBITMAP hBMP = (HBITMAP) LoadImage( NULL, "Your/ImagePath/a.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);

hBMPBITMAP 的句柄,您可以随意使用。

注意:传递 NULL 作为第一个参数很重要,来自文档:

hinst [输入,可选]

加载独立资源(图标、光标或位图文件)——用于 例如,c:\myimage.bmp——将此参数设置为 NULL。

来自msdn documentation for LoadImage

【讨论】:

这是一个外部库。 呃,我猜外部是指第三方库。会编辑。由于它是一个 Win32 项目,它已经使用了 Winapi。感谢您的回答! @Zoidberg Win32 项目中的标准库是什么? :S 只是一个更正,hInst 需要为 NULL 才能从文件加载。我刚刚在文档中阅读了它。 要加载独立资源(图标、光标或位图文件),例如 c:\myimage.bmp,请将此参数设置为 NULL。【参考方案2】:

是的,您可以使用 OleLoadPictureFromPath 或其他任何名称。核实。文档对于支持的格式可能仍然不一致和错误,但在现代 Windows 中也支持 JPEG 和 PNG。

【讨论】:

以上是关于从 Win32 项目中的 *.bmp 文件加载 HBITMAP的主要内容,如果未能解决你的问题,请参考以下文章

Win32 GUI c++ .bmp 图像未显示

win32创建工具栏的自定义图标

Win32 exe 找不到在 .lib 中编译的资源

在 C++ 中读取 .bmp 文件

在python中使用win32在内存中创建一个图标

C++:在 Windows 上使用 C++ 读写 BMP 文件的最简单方法是啥?