Win32 API 日本語リファレンス
ホームGraphics.DirectWrite › IDWriteGdiInterop

IDWriteGdiInterop

COM
IID1edd9491-9853-4299-898f-6432983b6f3a継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

GDI との相互運用機能を提供します。フォントフェイスを LOGFONT 構造体に変換するメソッドや、GDI のフォント記述をフォントフェイスに変換するメソッドなどがあります。また、ビットマップレンダーターゲットオブジェクトの作成にも使用されます。(IDWriteGdiInterop)

メソッド 5

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

vtbl 3 HRESULT CreateFontFromLOGFONT(LOGFONTW* logFont, IDWriteFont** font)

LOGFONT 構造体で指定されたプロパティに一致するフォントオブジェクトを作成します。(IDWriteGdiInterop.CreateFontFromLOGFONT)

logFontLOGFONTW*inGDI 互換のフォント記述を格納した構造体。
fontIDWriteFont**outこのメソッドが返るとき、成功した場合は新しく作成された IDWriteFont オブジェクトへのポインターのアドレスを格納します。失敗した場合は NULL を格納します。

戻り値

Type: HRESULT

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

vtbl 4 HRESULT ConvertFontToLOGFONT(IDWriteFont* font, LOGFONTW* logFont, BOOL* isSystemFont)

指定されたフォントの GDI 互換プロパティに基づいて LOGFONT 構造体を初期化します。(IDWriteGdiInterop.ConvertFontToLOGFONT)

fontIDWriteFont*inGDI 互換の LOGFONT 構造体に変換する IDWriteFont オブジェクト。
logFontLOGFONTW*outこのメソッドが返るとき、GDI 互換のフォント記述を受け取る構造体を格納します。
isSystemFontBOOL*outこのメソッドが返るとき、指定されたフォントオブジェクトがシステムフォントコレクションに含まれている場合は TRUE を、そうでない場合は FALSE を格納します。

戻り値

Type: HRESULT

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

解説(Remarks)

ConvertFontToLOGFONT による LOGFONT への変換は論理フォントのレベルで動作し、特定の物理フォントにマッピングされることを保証しません。GDI が、LOGFONT で書式設定されたテキストを表示するために、変換元の IDWriteFont オブジェクトと同じ物理フォントを選択することは保証されません。

vtbl 5 HRESULT ConvertFontFaceToLOGFONT(IDWriteFontFace* font, LOGFONTW* logFont)

指定されたフォントの GDI 互換プロパティに基づいて LOGFONT 構造体を初期化します。(IDWriteGdiInterop.ConvertFontFaceToLOGFONT)

fontIDWriteFontFace*inGDI 互換の LOGFONT 構造体に変換する IDWriteFontFace オブジェクト。
logFontLOGFONTW*outこのメソッドが返るとき、GDI 互換のフォント記述を受け取る構造体へのポインターを格納します。

戻り値

Type: HRESULT

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

解説(Remarks)

ConvertFontFaceToLOGFONT による LOGFONT への変換は論理フォントのレベルで動作し、特定の物理フォントにマッピングされることを保証しません。GDI が、LOGFONT で書式設定されたテキストを表示するために、変換元の IDWriteFont オブジェクトと同じ物理フォントを選択することは保証されません。

vtbl 6 HRESULT CreateFontFaceFromHdc(HDC hdc, IDWriteFontFace** fontFace)

指定された HDC で現在選択されている HFONT に対応する IDWriteFontFace オブジェクトを作成します。

hdcHDCinフォントが選択されているデバイスコンテキストへのハンドル。クライアントはすでにフォントマッピングを実行しており、デバイスコンテキストに選択されているフォントが、グリフのレンダリングに実際に使用されるフォントであることを前提とします。
fontFaceIDWriteFontFace**out新しく作成されたフォントフェイスオブジェクトへのポインターのアドレスを格納します。失敗した場合は NULL を格納します。返されるフォントフェイスは、ExtTextOut を使用してグリフ(必ずしも文字ではありません)を描画する際に使用されるものと同じ物理タイプフェイスを参照することが保証されます。

戻り値

Type: HRESULT

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

解説(Remarks)

この関数は、アプリケーションがテキストのレイアウトとシェーピングに GDI および Uniscribe 1.x を使用しつつ、最終的なレンダリングには DirectWrite を使用するシナリオを想定しています。この関数は、クライアントがグリフインデックスを使用してテキスト出力を行うことを前提としています。

vtbl 7 HRESULT CreateBitmapRenderTarget(HDC hdc, DWORD width, DWORD height, IDWriteBitmapRenderTarget** renderTarget)

グリフのレンダリングに使用できるビットマップとメモリ DC(デバイスコンテキスト)をカプセル化するオブジェクトを作成します。

hdcHDCinoptional互換性のあるメモリ DC(デバイスコンテキスト)の作成に使用する、省略可能なデバイスコンテキストへのハンドル。
widthDWORDinビットマップレンダーターゲットの幅。
heightDWORDinビットマップレンダーターゲットの高さ。
renderTargetIDWriteBitmapRenderTarget**outこのメソッドが返るとき、新しく作成された IDWriteBitmapRenderTarget オブジェクトへのポインターのアドレスを格納します。

戻り値

Type: HRESULT

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

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IDWriteGdiInterop "{1EDD9491-9853-4299-898F-6432983B6F3A}"
#usecom global IDWriteGdiInterop IID_IDWriteGdiInterop "{}"
#comfunc global IDWriteGdiInterop_CreateFontFromLOGFONT     3 var,sptr
#comfunc global IDWriteGdiInterop_ConvertFontToLOGFONT      4 sptr,var,var
#comfunc global IDWriteGdiInterop_ConvertFontFaceToLOGFONT  5 sptr,var
#comfunc global IDWriteGdiInterop_CreateFontFaceFromHdc     6 sptr,sptr
#comfunc global IDWriteGdiInterop_CreateBitmapRenderTarget  7 sptr,int,int,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。