getDialogBaseUnits 函式 (winuser.h)

擷取系統的對話框基底單位,這是系統字型中字元的平均寬度和高度。 對於使用系統字型的對話框,您可以使用這些值,在對話框範本和像素中指定的對話框範本單位之間轉換。 對於不使用系統字型的對話框,從對話框範本單位轉換成圖元的轉換取決於對話框所使用的字型。

針對任一類型的對話框,使用 MapDialogRect 函式執行轉換會比較容易。 MapDialogRect 會將字型納入考慮,並正確地將矩形從對話框範本單位轉換成圖元。

Syntax

long GetDialogBaseUnits();

傳回值

類型: LONG

函式會傳回對話框基底單位。 傳回值的低序單字包含水平對話框基底單位,而高序單字則包含垂直對話框基底單位。

備註

GetDialogBaseUnits 所傳回的水準基底單位等於系統字型中字元的平均寬度,以像素為單位;垂直基底單位等於字型的高度,以像素為單位。

只有在對話框範本無法指定字型時,才會使用系統字型。 大部分的對話框範本都會指定字型;因此,此函式不適用於大部分的對話框。

對於不使用系統字型的對話框,基底單位是對話框字型中字元的平均寬度和高度,以像素為單位。 您可以使用 GetTextMetricsGetTextExtentPoint32 函式來計算所選字型的這些值。 不過,藉由使用 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)
程式庫 User32.lib
Dll User32.dll
API 集合 ext-ms-win-ntuser-dialogbox-l1-1-2 (Windows 10 10.0.10240 版)

另請參閱

概念

對話框

MapDialogRect

參考