Windowsプログラムの開発におけるLoadImage関数の引数と使い方
LoadImage関数は、Windows APIの1つで、画像リソースを読み込むために使用されます。
LoadImage関数のパラメータとその使い方は以下の通りです:
- hInst(HINSTANCE型):画像リソースを含むモジュールのハンドルを指定します。通常、GetModuleHandle(NULL)を使用して、現在のアプリケーションのハンドルを取得します。
- lpszName(LPCTSTRの種類):画像リソースの名前を指定します。整数リソースID(例:MAKEINTRESOURCE(IDB_BITMAP1))またはリソース名が含まれる文字列へのポインタである必要があります。
- uType(UINT型):画像リソースのタイプを指定します。以下の値のいずれかである必要があります:
- IMAGE_BITMAP: .bmpファイルを読み込むためのもの。
- アイコン(.ico)ファイルを読み込むために使用されるIMAGE_ICON。
- 画像カーソル:.curファイルを読み込むために使用される。
- cxDesired(int型):読み込んだ画像の幅を指定します。0の場合、元の画像サイズを読み込みます。
- cyDesired(整数型):読み込み後の画像の高さを指定します。0の場合、元の画像サイズが読み込まれます。
- fuLoad(UINT型):使用される画像のロード方法を指定します。次のいずれかの値を取ることができます:
- デフォルトカラーを使用します。
- LR_LOADFROMFILE: lpszNameパラメーターには、リソース名ではなくファイルパスを指定します。
- LR_LOADTRANSPARENTは、透明な画像を読み込みます。
- 画像を共有できるように指定されたロードができます。
- LR_CREATEDIBSECTIONは、デバイス非依存型ビットマップ(DIB)セクションを作成します。
- 成功した場合は有効なハンドルが返され、失敗した場合はNULLが返されます。
LoadImage関数を呼び出した後、返されたハンドルを使用して、デバイス上に描画したり、コントロールのイメージとして設定したりすることができます。
以下はサンプルコードです:
HINSTANCE hInst = GetModuleHandle(NULL);
HBITMAP hBitmap = (HBITMAP)LoadImage(hInst, MAKEINTRESOURCE(IDB_BITMAP1), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR);
if (hBitmap != NULL)
{
// 在设备上绘制图像
HDC hdc = GetDC(hwnd);
HDC hdcMem = CreateCompatibleDC(hdc);
SelectObject(hdcMem, hBitmap);
BitBlt(hdc, 0, 0, cx, cy, hdcMem, 0, 0, SRCCOPY);
// 释放资源
DeleteDC(hdcMem);
ReleaseDC(hwnd, hdc);
DeleteObject(hBitmap);
}
上記の例のコードでは、IDB_BITMAP1というビットマップリソースをロードし、それをhwndハンドルに対応するウィンドウデバイス上に描画します。描画が完了した後は、関連するリソースを解放する必要があります。これには、デバイスコンテキスト(hdcMemおよびhdc)、およびビットマップオブジェクト(hBitmap)が含まれます。