getDialogBaseUnits 函式 (winuser.h)
擷取系統的對話框基底單位,這是系統字型中字元的平均寬度和高度。 對於使用系統字型的對話框,您可以使用這些值,在對話框範本和像素中指定的對話框範本單位之間轉換。 對於不使用系統字型的對話框,從對話框範本單位轉換成圖元的轉換取決於對話框所使用的字型。
針對任一類型的對話框,使用 MapDialogRect 函式執行轉換會比較容易。 MapDialogRect 會將字型納入考慮,並正確地將矩形從對話框範本單位轉換成圖元。
Syntax
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) |
程式庫 | User32.lib |
Dll | User32.dll |
API 集合 | ext-ms-win-ntuser-dialogbox-l1-1-2 (Windows 10 10.0.10240 版) |
另請參閱
概念
參考