Win32 API 日本語リファレンス
ホームUI.Ribbon › IUIImageFromBitmap

IUIImageFromBitmap

COM
IID18aba7f3-4c1c-4ba2-bf6c-f5c3326fa816継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IUIImageFromBitmap は、Windows リボン フレームワークが実装するファクトリ インターフェイスであり、IUIImage オブジェクトを作成するためのメソッドを定義します。

メソッド 1

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT CreateImage(HBITMAP bitmap, UI_OWNERSHIP options, IUIImage** image)

ビットマップ イメージから IUIImage オブジェクトを作成します。

bitmapHBITMAPinイメージを含むビットマップへのハンドル。
optionsUI_OWNERSHIPin

イメージを作成する際の所有権の条件

意味
UI_OWNERSHIP_TRANSFER options の値として UI_OWNERSHIP_TRANSFER を指定した場合、リボン フレームワークが IUIImage オブジェクトを通じてビットマップのハンドル (HBITMAP) を所有し、 不要になった時点で解放します。
このオプションを使用すると、リボンのホスト アプリケーションはアプリケーション UI の他の場所で同じ HBITMAP を安全に参照できなくなります。
UI_OWNERSHIP_COPY options の値として UI_OWNERSHIP_COPY を指定した場合、ホスト アプリケーションが HBITMAP を所有し、 UI の他の場所でも同じ HBITMAP を参照して使用できます。
このオプションでは、HBITMAP を解放する責任はホスト アプリケーションにあります。
imageIUIImage**outこのメソッドが返るとき、IUIImage オブジェクトを受け取るポインター変数のアドレスが格納されます。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。

解説(Remarks)

このファクトリ メソッドは、アプリケーションがイメージ リソースを動的に生成し、新しい HBITMAP をリボンに渡したい場合に有用です。 たとえば、Windows Imaging Component (WIC) を使用して Portable Network Graphics (PNG) を読み込む場合や、 CreateDIBSection を使用してスタイル ギャラリーの新しいスタイル用のイメージを作成する場合などです。

また、リボンによって不要とはならない既存のビットマップ イメージ (レガシー ツール バーのイメージ ストリップなど) を必要とするアプリケーションにも有用です。

リボンを既存のアプリケーションに実装しており、コード変更を最小限に抑えたい場合は、options の値として UI_OWNERSHIP_COPY を指定してください。この方法では、追加のイメージのために余分なメモリを使用します。

メモリ使用量を最小限に抑えるには、options の値として UI_OWNERSHIP_TRANSFER を指定してください。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

#define global IID_IUIImageFromBitmap "{18ABA7F3-4C1C-4BA2-BF6C-F5C3326FA816}"
#usecom global IUIImageFromBitmap IID_IUIImageFromBitmap "{}"
#comfunc global IUIImageFromBitmap_CreateImage  3 sptr,int,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。