您目前已離線,請等候您的網際網路重新連線

不支援您的瀏覽器

您必須更新瀏覽器,才能使用此網站。

更新至最新版本的 Internet Explorer

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

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本: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) pixels1 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 - 最後檢閱時間:07/11/2005 19:29:53 - 修訂: 2.3

  • Microsoft Platform Software Development Kit-January 2000 Edition
  • kbmt kbdlg kbhowto KB125681 KbMtzh
意見反應
0';m.content='false';document.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?">