1

我正在尝试将存储在我的文件中的位图加载到我的应用程序中。我按以下方式进行

HBITMAP hbitmap = NULL;
hbitmap = (HBITMAP)LoadImage(NULL,TEXT("F:\\Microsoft Visual Studio 2010 Projects\\test\\test\\bitmap1.bmp"),IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
BITMAP bmp;
GetObject(hbitmap,sizeof(BITMAP),&bmp);

在位图结构中,位图大小正确,如下所示:

bmp {bmType=0 bmWidth=1920 bmHeight=1080 ...}   tagBITMAP
bmType          0          long
bmWidth         1920           long
bmHeight            1080           long
bmWidthBytes    7680           long
bmPlanes            1          unsigned short
bmBitsPixel         32         unsigned short
bmBits          0x00000000     void *

问题是指向 bmBits 位图的指针总是指向 NULL (0x00000000)。谁能告诉我如何解决这个问题?太感谢了!

4

1 回答 1

3

这是记录在案的行为。来自 GetObject() 的 MSDN 文章:

如果 hgdiobj 是通过任何其他方式创建的位图的句柄,则 GetObject 仅返回位图的宽度、高度和颜色格式信息。您可以通过调用 GetDIBits 或 GetBitmapBits 函数来获取位图的位值。

于 2013-10-09T16:44:17.477 回答