Visual studio 2008 使用GDI+;位图

Visual studio 2008 使用GDI+;位图,visual-studio-2008,visual-c++,gdi+,Visual Studio 2008,Visual C++,Gdi+,我正在使用GDI+位图类将IStream转换为HBITMAP。我在链接器输入中包含了gliplus lib文件,在构建路径中也包含了dll。但是使用声明 Bitmap bm(lpStream,FALSE); 给我一个错误C2065:“位图”:未声明的标识符 有人能告诉我我做错了什么吗 谢谢 编辑 我已经在我的实现(gdiplus.h)中包含了相应的头文件,我可以通过选择上下文菜单中的“转到定义”选项来查看位图的定义。您还需要包含相关的头文件。据猜测,它可能有一个类似“Bitmap.h”或“gd

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

Bitmap bm(lpStream,FALSE);
给我一个错误C2065:“位图”:未声明的标识符

有人能告诉我我做错了什么吗

谢谢

编辑

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

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

关于这个问题还有更多的细节。正确的头文件是“gdiplus.h”。简言之:

#include "gdiplus.h"

Constructor Information
WindowsNT4.0SP6

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

编辑: ,看起来需要指定一个名称空间“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);
}
#包括
#包括
使用名称空间Gdiplus;
油漆上的空隙(HDC HDC)
{
图形(hdc);
钢笔(颜色(255,0,0,255));
图形.抽绳(和笔,0,0,200,100);
}

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

ULONG_PTR gdiplusToken;
GdiplusStartupInput startupInput;
GdiplusStartup(&gdiplusToken, &startupInput, 0);
您需要保留令牌,直到使用完Gdiplus,然后释放它:

GdiplusShutdown(gdiplusToken);

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

Hi。我已经把gdiplus.h包括在课堂上了。VisualStudio也打开了类的定义,因此我知道可以识别标题。但它仍然无法编译。您是将其包含在源文件中还是包含在预编译头文件(stdafx.h)中?如果是后者,您将需要重建预编译的头文件。我这样做是为了更安全。我做了一个干净的构建您应该检查名称空间的存在,或者可能需要定义一个预定义的预处理器符号?有一个名为“Gdiplus”的名称空间
GdiplusShutdown(gdiplusToken);