GetDialogBaseUnits 関数 (winuser.h)

システムのダイアログの基本単位 (システム フォントの文字の平均幅と高さ) を取得します。 システム フォントを使用するダイアログ ボックスの場合は、ダイアログ ボックス テンプレートとピクセルで指定されているように、これらの値を使用してダイアログ テンプレート単位間で変換できます。 システム フォントを使用しないダイアログ ボックスの場合、ダイアログ テンプレートの単位からピクセルへの変換は、ダイアログ ボックスで使用されるフォントによって異なります。

どちらの種類のダイアログ ボックスでも、 MapDialogRect 関数を使用して変換を実行する方が簡単です。 MapDialogRect はフォントを考慮に入れ、ダイアログ テンプレート単位の四角形をピクセルに正しく変換します。

構文

long GetDialogBaseUnits();

戻り値

型: LONG

関数は、ダイアログの基本単位を返します。 戻り値の下位ワードには水平ダイアログ ボックスの基本単位が含まれており、高位ワードには垂直ダイアログ ボックスの基本単位が含まれています。

注釈

GetDialogBaseUnits によって返される水平方向の基本単位は、システム フォントの文字の平均幅 (ピクセル単位) と等しくなります。垂直方向の基本単位は、フォントの高さ (ピクセル単位) と等しくなります。

システム フォントは、ダイアログ ボックス テンプレートでフォントの指定に失敗した場合にのみ使用されます。 ほとんどのダイアログ ボックス テンプレートはフォントを指定します。そのため、この関数はほとんどのダイアログ ボックスでは役に立ちません。

システム フォントを使用しないダイアログ ボックスの基本単位は、ダイアログのフォント内の文字の平均幅と高さ (ピクセル単位) です。 GetTextMetrics 関数と GetTextExtentPoint32 関数を使用して、選択したフォントのこれらの値を計算できます。 ただし、 MapDialogRect 関数を使用すると、計算がシステムによって実行されるものと異なる場合に発生する可能性のあるエラーを回避できます。

各水平ベースユニットは、4つの水平ダイアログテンプレートユニットに等しくなります。各垂直ベースユニットは、8 つの垂直ダイアログ テンプレートユニットに等しくなります。 したがって、ダイアログ テンプレートの単位をピクセルに変換するには、次の数式を使用します。


pixelX = MulDiv(templateunitX, baseunitX, 4);
pixelY = MulDiv(templateunitY, baseunitY, 8);

同様に、ピクセルからダイアログ テンプレート単位に変換するには、次の数式を使用します。


templateunitX = MulDiv(pixelX, 4, baseunitX);
templateunitY = MulDiv(pixelY, 8, baseunitY);

例については、「コンボ ボックスの使用」の「 コンボ ボックス ツール バーの作成」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー winuser.h (Windows.h を含む)
Library User32.lib
[DLL] User32.dll
API セット ext-ms-win-ntuser-dialogbox-l1-1-2 (Windows 10 バージョン 10.0.10240 で導入)

関連項目

概念

ダイアログ ボックス

MapDialogRect

参照