Nasıl yapılır: iletişim temel birimler, sistem tabanlı olmayan bir yazı tipi ile hesapla

Makale çevirileri Makale çevirileri
Makale numarası: 125681 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Özet

Bu makalede, Windows 95'te sistem yazı tipi dışında yazı tipini kullanarak iletişim kutusu iletişim temel birimi hesaplamakta gösterilmiştir. Bu hesaplama, bellek iletişim kutusu şablonlar oluşturma veya iletişim kutusu boyutları hesaplamak için kullanabilirsiniz.

Daha fazla bilgi

Her <a0>iletişim</a0> kutusunda şablonu, konumu, genişlik ve Yükseklik iletişim kutusu denetimleri içerdiği ve belirttiğiniz ölçümlere içerir. Bu ölçüm değerlerinin, aygıttan bağımsız vardır, bu nedenle, uygulama tüm görüntü aygıtları türü aynı iletişim kutusu oluşturmak için tek bir şablon olarak kullanabilirsiniz. Bu, bir iletişim kutusu aynı oranlarını ve görünümü farklı çözümler ve ekranlar arasında en boy oranı rağmen tüm ekranlarında sahip sağlar.

Ayrıca, iletişim kutusunu Ölçümler iletişim temel birimleri cinsinden verilir. Yatay bir temel birimi dörtte biri sistem yazı tipi için ortalama bir karakter genişliği eşittir. Dikey bir temel birimi, sistem yazı tipi için ortalama karakter yüksekliğinin sekizde eşittir. Bir uygulama GetDialogBaseUnits işlevini kullanarak, geçerli görüntü temel birim başına piksel sayısını alabilirsiniz. Gelen bir dönüş değeri, GetDialogBaseUnits işlevi, düşük sıralı sözcüğün yatay temel birimleri içerir ve yüksek sıralı sözcük GetDialogBaseUnits işlevi, sonuç değerinin dikey temel birimleri içerir.

Bu bilgileri kullanarak, sistem yazı tipi dışında yazı tipini kullanarak bir iletişim kutusu için iletişim temel birimleri hesaplaması:
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)
				
yazı tipini bir iletişim kutusu değişiklikleri, bir denetimin konumunu ve gerçek boyutunu da değişir.

Bir iletişim kutusu temel birimi gibi iletişim kutusunu birim başına piksel sayısını eşdeğerdir:
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
				
ortalama bir karakter genişliği ve yüksekliği bir yazı tipi gibi hesaplanması:
hFontOld = SelectObject(hdc,hFont);
GetTextMetrics(hdc,&tm);
GetTextExtentPoint32(hdc,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrst"
            "uvwxyz",52,&size);
avgWidth = (size.cx/26+1)/2;
avgHeight = (WORD)tm.tmHeight;
				
tmAveCharWidth alanı yalnızca TEXTMETRIC yapısının yapılan tahmini olarak gösteren gerçek ortalama karakter genişliği (genellikle "x" harfi genişliğini verir) ve sistem tarafından kullanılan değeri ile eşleştirmek için doğru ortalama karakter genişliği kadar hesaplanmalıdır.

Iletişim kutusu birimleri piksellere dönüştürmek MapDialogRect işlevini kullanabilirsiniz, ancak piksel iletişim kutusunu birimlerine dönüştürecek olan bir işlev yoktur. Aşağıda bu dönüştürme gerçekleştirmek için formül kullanabilirsiniz.

Referanslar

Bu konu hakkında daha fazla bilgi için lütfen Microsoft Knowledge Base'de aşağıdaki makaleye bakın:
145994Sistem yazı tipi değil kullanılırken iletişim birimleri hesapla nasıl kullanılır

Özellikler

Makale numarası: 125681 - Last Review: 11 Temmuz 2005 Pazartesi - Gözden geçirme: 2.3
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Platform Software Development Kit - Ocak 2000 Sürümü, Ne zaman ne ile kullanilir:
    • Microsoft Windows 95
    • the operating system: Microsoft Windows 2000
Anahtar Kelimeler: 
kbmt kbdlg kbhowto KB125681 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:125681

Geri Bildirim Ver

 

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