GDI+の初期化と終了 その2
要約
以前に書いたやつにエラーチェックを加えました。
このクラスはコンストラクタで初期化処理を行い、デストラクタで終了処理を行ってくれる優れものです。
Effective C++ 原著第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
- 作者: スコット・メイヤーズ,小林健一郎
- 出版社/メーカー: ピアソン・エデュケーション
- 発売日: 2006/04/29
- メディア: 大型本
- 購入: 29人 クリック: 411回
- この商品を含むブログ (186件) を見る
また、エラーチェックという、後回しにした挙句忘れてしまいがちな処理を思い出させてくれたのは以下のロシア製の掲示板。
ttp://www.gamedev.ru/code/forum/?id=87148
ソース
// GdiplusInit.h #pragma once //#include <windows.h> //#include <gdiplus.h> using namespace Gdiplus; class CGdiplusInit { private: ULONG_PTR m_gdiplusToken; Status m_res; // Result public: // Initialize 初期化 CGdiplusInit() { GdiplusStartupInput gdiplusStartupInput; m_res = GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL); } // Shutdown 終了 ~CGdiplusInit() { if( Result()) GdiplusShutdown( m_gdiplusToken); } // Get .... qawsedrftgyhjikl. 初期化の結果を得る bool Result() { return m_res == Ok; } };
あと、gdiplus.libをリンクするのも忘れずに。VC++2008EEなら
#pragma comment(lib, "gdiplus.lib")
と書くだけでもいい。
使い方
INT WinMain(...) { // いろいろ CGdiplusInit gdiplusInit; if(! gdiplusInit.Result()) { MessageBox( NULL, _T("GDI+の初期化に失敗しました。"), _T("エラー"), MB_OK); return 1; } // いろいろ return 0; }