GDI+を使ってHBITMAPを取得

制作:KrK (Knuth for Kludge)

情報・ご感想はこちら

KrK's Cracked Text > はしくれコード


環境

ソース


#include <windows.h>    // Win32API
#include <gdiplus.h>    // GDI+
#pragma comment(lib, "Gdiplus.lib")
using namespace Gdiplus;

//---------------------------------------------------------------------
// GDI+を使ってHBITMAPを取得
// 作成 20140818 KrK
// 引数 filename:ファイル名
// 戻り値:ビットマップハンドル
//---------------------------------------------------------------------
HBITMAP LoadByGDIPlus(WCHAR* filename)
{
    HBITMAP hBmp = NULL;          // ビットマップハンドル
    GdiplusStartupInput gdiSI;    // GDI+
    ULONG_PTR gdiToken;           // GDI+

    // GDI+の初期化
    GdiplusStartup(&gdiToken, &gdiSI, NULL);

	// ビットマップ取得
    Bitmap* pBitmap = Bitmap::FromFile(filename);
    if (!pBitmap)
    {
        GdiplusShutdown(gdiToken);
        return NULL;
    }

    // GDI+でビットマップハンドルを取得
    pBitmap->GetHBITMAP(NULL, &hBmp);

    // GDI+の後処理
    delete pBitmap;
    GdiplusShutdown(gdiToken);

    // 返す
    return hBmp;
}

使い方


HBITMAP hBmp;               // ビットマップハンドル
WCHAR filename[_MAX_PATH];  // ファイル名

// ビットマップを読み込む
hBmp = LoadByGDIPlus(filename, color);

(中略)

// 開放
DeleteObject(hBmp);

使用条件


最終更新:2023/04/29

免責事項