Свертывание окон


Система уменьшает главное окно программы (перекрывающий стиль) в свернутое окно, когда пользователь нажимает кнопку "Свернуть" (Minimize) в меню окна или приложение вызывает функцию ShowWindow и определяет значение такое как SW_MINIMIZE. Свертывание окна ускоряет общую производительность системы, сокращая объем работы, который приложение должно сделать, модернизируя своё главное окно.

Для стандартного приложения система рисует значок, называемый значком класса, которое, когда окно минимизировано, маркирует значок именем окна. Значок класса, статическое изображение, которое представляет программу, определяется приложением, когда оно регистрирует класс окна. Прикладная программа назначает дескриптор для значка класса в члене hIcon структуры WNDCLASS, перед вызовом функции RegisterClass. Приложение может использовать функцию LoadIcon, чтобы извлечь дескриптор значка.

Перед рисованием значка класса, система посылает сообщение WM_ICONERASEBKGND оконной процедуре, позволяя приложению подготовить фон для рисования значка путем установки самого подходящего цвета фона для значка. Это полезно для приложений, которые объединяют значок с текущими цветами фона. Если прикладная программа обрабатывает это сообщение, оно должно использовать контекст устройства (DC) отображения, предусмотренный сообщением, чтобы рисовать фон ( параметр wParam содержит в себе дескриптор для DC устройства отображения). Если приложение не обрабатывает сообщение WM_ICONERASEBKGND, оно должно передать сообщение в функцию DefWindowProc; функция закрашивает область значка текущим цветом и узором рабочего стола. После отправки сообщения WM_ICONERASEBKGND система посылает сообщение WM_PAINTICON оконной процедуре. Приложение должно немедленно передать это внутреннее сообщение в функцию DefWindowProc.

Система не требует, чтобы у класса у окна был значок класса. Если приложение устанавливает член hIcon структуры WNDCLASS в NULL, значок класса не определяется. В этом случае, система отправляет сообщение WM_ERASEBKGND (вместо WM_ICONERASEBKGND) окну класса всякий раз, когда окно должно раскрасить фон значка. Система затем отправляет сообщение WM_PAINT и приложение рисует значок или другое изображение, представляющее свернутое окно. В таких случаях, прикладная программа должна определить, когда окно минимизировано и рисовать соответственно. Это можно сделать так при помощи вызова функции IsIconic. Если функцией возвращается значение TRUE, окно минимизировано. Если приложение не будет иметь никакого значка класса и будет не в состоянии обработать сообщение WM_ERASEBKGND и WM_PAINT, то область, которую система резервирует для значка приложения, будет содержать то, что было раньше на экране.

Назад в оглавление
На главную страницу
Переведено 25.12.2010 19:52 ©Copyright V. Sokovikov
Hosted by uCoz