GetDialogBaseUnits

函數功能:

       該函數返回系統的對話基本單位,該基本單位爲系統字體字符的平均寬度和高度。對於使用系統字體的對話框,可以用這些值在對話框模板之間轉換,比如在對話框模板和像素之間。對於不使用系統字體的對話框,從對話框模板單位到像素的轉換要根據對話框使用的字體而定。對於對話框的其中一種類型用MaPDialogRect函數很容易地來執行轉換,MaPDialogRect考慮字體且正確的把一個長方形模板單位轉換爲此像素。


API 函數原型:

註釋:_In_ 說明該參數是輸入的。
  1. LONG GetDialogBaseUnits(
  2.   VOID
  3. );
複製代碼


參數解析:

參數 含義


返回值:

1.返回值爲一個32位的含有對話基本單位的值。返回值的低位字含有水平對話框基本單位,且高位字含有垂直對話框基本單位。

2.獲取字體的橫/縱座標:返回值是一個8位16進制數,高4位存放字體的高度,低4位存放字體的寬度,可以通過以下語句了獲取字體的高和寬
       int charH = HIWORD(GetDialogBaseUnits());
       int charW = LOWORD(GetDialogBaseUnits());

備註:

       GetDialogBaseUnits函數返回的水平基本單位同系統字體中字符以像素爲單位的平均寬度相等;垂直基本單位同系統字體中字符的以像素爲單位的平均高度相等; 對於一個沒有使用系統字體的對話框基本單位相等於對話框字體字符以像素爲單位的平均寬度和平均高度。可以用GetTextMetrics和GetTextExtentPoint32函數爲一個選擇的字體來計算這些值。但是,如果計算結果與那些通過系統執行的值不同,那麼可以用MapDialogRect函數避免可能發生的錯誤。每一個水平基本單位同四個水平對話框模板單位相等;每一個垂直基本單位同八個垂直對話框模板單位相等。所以用下列公式來把對話框模板單位轉換爲像素:
       PiselX=(temptateunitX★baseunitX)/4
       PiseIY=(templateunitY★baseunitY)/8

       同樣地.用下列公式來把像素轉換爲對話框模板單位:
       templateunitX=(pixelX★4)/baseunitX;
       templateunitY=(plxelY★8)/baseunitY;

       Windows CE:Windows CE不支持此函數的任何一個擴展的錯誤值。

       速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows:1.0及以上版本;頭文件:Winuser.h;庫文件:user32.lib

發佈了17 篇原創文章 · 獲贊 19 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章