3

我正在使用 GDI+ Bitmap 类将 IStream 转换为 HBITMAP。我在链接器输入中包含了 gliplus lib 文件,并且在构建路径中也包含了 dll。但是使用语句

Bitmap bm(lpStream,FALSE);

给我一个错误C2065: 'Bitmap' : undeclared identifier

有人可以告诉我我在这里做错了什么。

谢谢。

编辑
我已经在我的实现中包含了适当的标题(gdiplus.h),我可以通过在上下文菜单中选择“转到定义”选项来查看位图的定义。

4

2 回答 2

3

除了命名空间问题之外,使用 Gdiplus 还需要在使用之前对库进行初始化:

ULONG_PTR gdiplusToken;
GdiplusStartupInput startupInput;
GdiplusStartup(&gdiplusToken, &startupInput, 0);

你需要持有令牌直到你使用完 Gdiplus,然后释放它:

GdiplusShutdown(gdiplusToken);

如果库未初始化,Gdiplus 操作将失败并出现错误 GdiplusNotInitialized。

于 2009-05-15T19:23:03.213 回答
2

您还需要包含相关的头文件。猜测一下,它的名称可能类似于“Bitmap.h”或“gdi+.h”。

这里有一些关于Bitmap 类的更多细节。正确的头文件是“gdiplus.h”。简而言之:

#include "gdiplus.h"

Constructor Information
Stock Implementation  gdiplus.dll
Header    Declared in Gdiplusheaders.h, include gdiplus.h
Import library    gdiplus.lib
Minimum availability  GDI+ 1.0
Minimum operating systems  Windows 98/Me, Windows XP, Windows 2000,

视窗 NT 4.0 SP6

在 MSDN 的表中,它显示“Header”,它告诉您需要包含的头文件的名称。您已经介绍过的“导入库”。如果你错过了,你会得到一个链接错误。

编辑: 在这篇关于 GDI+ 入门的文章中,您需要指定一个命名空间“Gdiplus”。要么使用“使用命名空间 Gdiplus”,要么明确指定命名空间。

#include <windows.h>
#include <gdiplus.h>
using namespace Gdiplus;

VOID OnPaint(HDC hdc)
{
   Graphics graphics(hdc);
   Pen      pen(Color(255, 0, 0, 255));
   graphics.DrawLine(&pen, 0, 0, 200, 100);
}
于 2009-02-06T08:27:29.443 回答