システム ・ ベースのフォントを使用してダイアログの基本単位を計算するには、方法


概要


この資料では、Windows 95 で、システム フォント以外のフォントを使用して、ダイアログ ボックスのダイアログの基本単位を計算する方法を示します。この計算を使用するにはメモリ内のダイアログ ボックスのテンプレートを作成する] ダイアログ ボックスのサイズを計算します。

詳細


各ダイアログ ボックスのテンプレートには、位置、幅、および、ダイアログ ボックスおよびそれに含まれるコントロールの高さを指定する測定値が含まれています。これらの測定値はデバイスに依存しないアプリケーションは、同じダイアログ ボックスのすべての種類のディスプレイ デバイスを作成する 1 つのテンプレートを使用できます。これにより、ダイアログ ボックスが同じ比率と外観異なる解像度と画面の縦横比にかかわらずすべての画面で。


さらに、ダイアログ ボックスの測定値は、ダイアログの基本単位で与えられます。1 つの水平方向の基本単位は、システム フォントの平均文字幅の 4 分の 1 と同じです。1 つの垂直方向の基本単位は、システム フォントの平均文字高さの 8 分の 1 と同じです。アプリケーションは、GetDialogBaseUnits 関数を使用して現在の表示の基本出荷単位あたりのピクセル数を取得できます。、GetDialogBaseUnits 関数からの戻り値の下位ワードには、水平方向の基本単位が含まれていて、GetDialogBaseUnits 関数からの戻り値の上位ワードには、垂直方向の基本単位が含まれています。


この情報を使用して、システム フォント以外のフォントを使用してダイアログ ボックスのダイアログの基本単位を計算することができます。

horz pixels == 2 * horz dialog units * (average char width of dialog font
/ average char width of system font)
vert pixels == 2 * vert dialog units * (average char height of dialog font
/ average char height of system font)
ダイアログ ボックスの変更のフォントとして、実際のサイズと、コントロールの位置も変更されます。


1 つのダイアログ ボックスの基本単位は次のようにダイアログ ボックスの単位あたりのピクセル数と同じです。

1 horz dialog base unit == (2 * average char width dialog font /
average char width system font) pixels
1 vert dialog base unit == (2 * average char height dialog font /
average char height system font) pixels
フォントの平均文字幅と高さは次のように計算できます。

hFontOld = SelectObject(hdc,hFont);
GetTextMetrics(hdc,&tm);
GetTextExtentPoint32(hdc,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrst"
"uvwxyz",52,&size);
avgWidth = (size.cx/26+1)/2;
avgHeight = (WORD)tm.tmHeight;
TmAveCharWidth、受け取る構造体のフィールドのみ (文字"x"の幅を提供通常) 実際の平均文字幅に近いし、システムで使用される値と一致する場合の平均文字幅を計算する必要がので。


MapDialogRect 関数を使用して、ダイアログ ボックス単位をピクセル単位に変換することができますが、ダイアログ ボックス単位をピクセル単位を変換する関数はありません。ここで示すように、この変換を実行する数式を使用することができます。

関連情報


このトピックの詳細については、次のマイクロソフト サポート技術情報を参照してください。
145994システム フォントを使用しない場合は、ダイアログ単位を計算する方法