четверг, 25 февраля 2010 г.

Почему все свёрнутые окна имеют размер 160x31?

Это перевод Why do minimized windows have an apparent size of 160x31? Автор: Реймонд Чен.

Мы обсуждали некоторое время назад, куда сворачивались окна до изобретения панели задач. В мире же современной панели задач свёрнутые окна имеют кажущийся размер 160x31 (вы, конечно, не можете видеть свёрнутое окно, но если вы посмотрите его размеры в программе типа Spy++, то вы увидите, что свёрнутое окно имеет размер 160x31). Почему?

Этот размер не просто кажущийся. Это действительно их размер. Вы можете увидеть это, например, если вы запустите программу с MDI интерфейсом.



Заметьте окно в левом-нижнем углу. Это свёрнутое окно (хотя оно свернулось в своего MDI носителя, а не в панель задач). С введением Проводника Windows, который размещал файлы на рабочей области в виде иконок, стало необходимым изменить внешний вид свёрнутых окон, чтобы не допустить путаницы между файлами и окнами (до панели задач свёрнутые окна отобразались значками на рабочей области). Свёрнутая программа, поэтому, стала отображаться как заголовок без окна. Обычно вы не видите свёрнутые окна, потому что они паркуются за пределами видимой области экрана, но их реальный размер будет 160x31 (прим. пер.: у меня на Windows 7 свёрнутые окна получают размер 160x32, а паркуются они в районе -32000x-32000).

Программный интерфейс для свёрнутых окон остался тем же самым по соображениям совместимости (и, пожалуйста, давайте не будем спорить, хороша или плоха обратная совместимость). Вот почему функция, которая по окну говорит вам, свёрнуто оно или нет, продолжает называться IsIconic, а сообщение, которое вы получаете, когда кто-то пытается восстановить свёрнутую программу, всё ещё называется WM_QUERYOPEN, и вы всё ещё можете использовать функцию OpenIcon для "открытия" свёрнутой "иконки". Всё это ещё с нами, хотя свёрнутые окна не выглядят как иконки вот уже пятнадцать лет.

Функция OpenIcon - это просто старомодный способ сказать ShowWindow(hwnd, SW_NORMAL), аналогично как функция CloseWindow (датируемая временами Windows 1.0) это сверх старомодный способ сказать ShowWindow(hwnd, SW_MINIMIZE).

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

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

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

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

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

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

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