如何計算以非系統架構的字型對話方塊基底單位

文章翻譯 文章翻譯
文章編號: 125681 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

結論

本文將告訴您,如何計算對話方塊基底單位的 [使用字型,而不是在 Windows 95 中的系統字型] 對話方塊。您可以使用這項計算來建置在記憶體中的對話方塊範本或計算對話方塊] 方塊中的維度。

其他相關資訊

每個對話方塊範本包含指定的位置、 寬度及對話方塊和其包含的控制項的高度的度量單位。這些度量單位是裝置無關,所以應用程式可以使用單一的範本來建立所有類型的顯示裝置相同的對話方塊。 這可確保對話方塊,將相同比例及外觀有在所有的畫面,儘管有不同的解析度和畫面之間的長寬比。

進一步,對話方塊方塊度量單位列在對話方塊的基本單位。水平的基底單位等於系統字型為平均字元寬度的四分之一。垂直的基底單位等於八分之一的平均字元高度的系統字型。應用程式可以使用 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 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 欄位 TEXTMETRIC 結構的近似值 (通常提供字母"x"的寬度) 的實際的平均字元寬度,並因此則為 True 的平均字元寬度必須計算以符合由系統使用的值。

您可以將轉換對話方塊方塊單位為像素,使用 MapDialogRect 函式,但有一個會將像素轉換成對話方塊方塊單位沒有函式。您可以使用此處顯示執行此轉換的公式。

?考

如需有關這個主題的詳細資訊,請參閱 「 Microsoft 知識庫 」 中下列文:
145994如何不使用系統字型時,計算對話方塊單位

屬性

文章編號: 125681 - 上次校閱: 2005年7月11日 - 版次: 2.3
這篇文章中的資訊適用於:
  • Microsoft Platform Software Development Kit-January 2000 Edition?應用於:
    • Microsoft Windows 95
    • the operating system: Microsoft Windows 2000
關鍵字:?
kbmt kbdlg kbhowto KB125681 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:125681
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com