воскресенье, 21 февраля 2010 г.

А что за дела с флагом DS_SHELLFONT?

Это перевод What's the deal with the DS_SHELLFONT flag? Автор: Реймонд Чен.

Он указывает, что вы хотите получить шрифт оболочки Windows 2000 по-умолчанию. Но это не означает, что вы его действительно получите.

Чтобы указать, что вы хотите получить вид "Windows 2000" для вашего диалога (прим. пер.: речь идёт о диалогах на WinAPI), вам нужно сделать три вещи и надеяться на четвёртую:
  1. Использовать шаблон DIALOGEX вместо шаблона DIALOG.
  2. Установить флаг DS_SHELLFONT в стиле диалога.
  3. Установить шрифт диалога в "MS Shell Dlg".
  4. Надеяться, что вы запущены на Windows 2000 или старшей, и при этом на системе включен новый шрифт Windows 2000.
Если все четыре условия выполнены, то ваш диалог получает новый вид "Windows 2000".

Если любое условие не выполняется, то вы получаете "классический" диалоговый шрифт. Заметьте, что четвёртое условие не в вашей юрисдикции. Соответственно, вы обязаны делать диалоги так, чтобы они выглядели хорошо и в новом стиле и в классическом.

Однако, для закладок свойств (property sheet) всё становится более сложным.

Было бы очень плохо, если бы закладки выполнялись в различных визуальных стилях. Вы бы не хотели иметь кнопку "Дополнительно" выполненную шрифтом MS Sans Serif, но при этом кнопка "Применить" была бы с Tahoma. Для избежания этой проблемы менеджер закладок свойств пробегает по всем страничкам. Если все страницы используют вид "Windows 2000", то весь диалог целиком также получает вид "Windows 2000". Но если хотя бы одна страница не поддерживает новый стиль, то менеджер решает "плыть по течению" и создаёт диалог в классическом виде, он также конвертирует все страницы с видом "Windows 2000" в классический вид.

Таким способом, все страницы диалога будут иметь классический вид, вместо помеси стилей, когда некоторые страницы имеют классический стиль, а другие - стиль Windows 2000.

Вот почему вы иногда можете видеть, как диалоги свойств оболочки имеют классический вид. Некоторые расширения оболочки добавляют страницу, которая не поддерживает вид "Windows 2000", так что ради визуального единообразия менеджер закладок свойств вынужден использовать классический стиль.

Это ещё одна причина для проверки ваших вкладок свойств в обоих стилях.

Комментариев нет:

Отправить комментарий

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.