3

IStream を HBITMAP に変換するために GDI+ Bitmap クラスを使用しています。リンカー入力にgliplus libファイルを含め、ビルドパスにdllも含めました。しかし、ステートメントを使用して

Bitmap bm(lpStream,FALSE);

エラーC2065: 'Bitmap' : undeclared identifierが表示されます

誰かが私がここで間違っていることを教えてください。

ありがとう。

編集
実装 (gdiplus.h) に適切なヘッダーを既に含めています。また、コンテキスト メニューの [定義に移動] オプションを選択すると、Bitmap の定義を表示できます。

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,

Windows NT 4.0 SP6

MSDN の表で「ヘッダー」と表示されているところに、含める必要があるヘッダー ファイルの名前が示されています。すでに説明した「インポート ライブラリ」。それを見逃していたら、リンク エラーが発生していたでしょう。

編集: GDI+ の開始に関するこの記事では、指定する必要がある名前空間「Gdiplus」があるようです。「using namespace 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 に答える