Способ расчета базовой единицы диалогового окна шрифт не под управлением системы

Переводы статьи Переводы статьи
Код статьи: 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 Knowledge Base:
145994 Как рассчитать единицы диалогового окна, когда не используется системный шрифт

Свойства

Код статьи: 125681 - Последний отзыв: 2 июня 2011 г. - Revision: 4.0
Ключевые слова: 
kbdlg kbhowto kbmt KB125681 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:125681

Отправить отзыв

 

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