Функцииподдержкиокон
Интерфейс прикладного программирования Windows предоставляет широкий набор функций для работы с окнами в приложениях. Эти функции позволяют менять размеры, расположение и характеристики отображения окна. Приложение может определить и изменить все характеристики окон с использованием предусмотренных для этого функций.
Данныеклассаокна
Классы окон представляют собой общие типы окон, которые формируют основу окон. Они напоминают классы C++ тем, что окна, созданные с помощью конкретного класса окна, имеют одинаковые свойства. Класс окна хранит основную информацию, которая применяется ко всем окнам, созданным с использованием этого класса. Созданное окно автоматически принимает такие свойства класса, как цвет фона или пиктограмма. Класс окна может также хранить дополнительные данные, к которым приложение может обращаться и использовать во время работы.
Структура WNDCLASSEXпредставляет собой место хранения данных класса. В приложении структура WNDCLASSEXиспользуется при регистрации нового класса окна и при выборке информации о классе. Определение структуры WNDCLASSEXприведено в листинге 4.1.
Листинг 4.1. СтруктураWNDCLASSEX__________________________________________________
CM. /Iocal-sources/chap04/t04-01.txt
Все элементы, показанные в структуре WNDCLASSEX, представляют собой 32-разрядные (длинные) значения, которые можно выбирать с помощью функции GetClassLong. Дополнительные данные класса размещаются в конце структуры WNDCLASSEX, и доступ к ним может быть получен одним из двух способов. Если требуется 32-разрядное значение, его можно выбрать с помощью функции GetClassLong. Если требуется 16-разрядное значение, применяется функция GetClassWord. Функция GetClassWordвыбирает только одно значение, отличное от того, что находится в дополнительных данных класса, — атомарное значение класса.
Когда приложение изменяет значение какого-либо элемента класса, оно воздействует на все окна, созданные с использованием этого класса. В приложении для изменения значения любого из элементов структуры WNDCLASSEX, наряду с 32-разрядными значениями дополнительных данных класса, применяется функция SetClassLong. Для изменения 16-разрядного значения в дополнительных данных класса применяется функция SetClassWord.
В окнах, наряду с дополнительными данными, содержится конкретная информация. Как и в случае класса окна, существуют два набора функций для определения и изменения конкретной информации окна. Функции GetWindowLong и GetWindowWord выбирают информацию из окна, а приложение изменяет ее с помощью функций SetWindowLong и SetWindowWord.
Присоединение данных к окну
Окно может хранить список связанных с ним данных, называемых элементами свойств. Каждый элемент свойств содержит 32-разрядный дескриптор для хранения данных и имеет уникальный идентификатор в виде символьной строки. Окно управляет списком свойств, а приложение может выбирать данные, связанные с элементом свойств, используя только дескриптор окна и уникальную символьную строку. Это средство можно использовать для хранения практически любой информации, относящейся к конкретному окну, без использования глобальных переменных. Данные можно связать с окном с помощью дополнительных данных окна и функций SetWindowLong и SetWindowWord. (Однако в таких случаях данные не структурированы, и приложению должны быть известны точные смещения для каждого значения, хранимого в дополнительных данных окна.) Для хранения большого блока данных приложение может распределить память и хранить дескриптор этой области памяти в качестве элемента свойств.
Функция SetProp позволяет связать с окном новое свойство. Функция SetProp добавляет элемент свойств к списку свойств окна, откуда этот элемент можно в дальнейшем выбрать с использованием функции GetProp. Функция EnumProps позволяет просматривать все свойства, связанные с окном, не зная заранее уникальные идентификаторы свойств. Функция EnumProps последовательно проходит по каждому элементу свойств в списке и отправляет его в функцию обратного вызова для опроса в приложении. Элементы свойств можно удалять из списка с помощью функции RemoveProp.
Изменение внешнего вида окон
Атрибутом окна, наиболее часто изменяемым в приложении, является заголовок окна. Это текст, отображаемый в области заголовка окна или на кнопке. Заголовок элемента управления редактированием — это текст, который в настоящее время отображается в элементе управления редактированием. Для выборки и изменения текста заголовка окна или элемента управления предназначены функции GetWindowText и SetWindowText.
Приложение может изменять размеры и положение окна во время выполнения. Для изменения размеров и положения окна может применяться несколько функций; наиболее простой из них является функция MoveWindow. Применяя ряд функций BeginDeferWindowPos, DeferWindowPos и EndDeferWindowPos, можно одновременно перемещать и изменять размеры нескольких окон. Эти функции позволяют также изменять размеры окна, не зная текущего положения окна и не меняя порядка окон.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.