Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум «Основы разработки приложений Windows» книга 1.DOC
Скачиваний:
107
Добавлен:
10.05.2014
Размер:
721.41 Кб
Скачать

Создание и показ окна

Для создания окна, в частности главного окна приложения, используется функция Windows CreateWindow(), требующая при вызове указания 11 параметров, описание которых можно найти в интерактивном справочнике; впрочем, назначение большей части этих параметров очевидно:

HWND hwnd=CreateWindow(szClassName,//Класс окна

szTitle, WS_OVERLAPPEDWINDOW,//Заголовок, стиль окна

10,10,300,100, //Координаты, размеры

HWND_DESKTOP,NULL,//Родитель, меню

hInst,NULL);//Дескриптор приложения, параметры

Передача функции CreateWindow()через первый параметр имени класса окна позволяет использовать при создании окна те его общие характеристики, которые были определены в структуреWNDCLASS, например форму курсора и цвет фона. Вызывая функциюCreateWindow()многократно, можно создать много окон данного класса, различающихся, например, размерами и местоположением на экране. Однако пока мы создаем только главное окно приложения, которое, очевидно, должно быть в одном экземпляре.

Второй параметр определяет адрес строки с заголовком, появляющейся в верхней части окна.

Третий параметр определяет стиль окна. С помощью стиля задаются такие характеристики окна, как вид окружающей его рамки, наличие или отсутствие строки заголовка и целый ряд других. Стиль представляет собой комбинацию большого количества констант, каждая из которых отвечает за тот или иной элемент оформления или свойство окна. Так, константа WSTHICKFRAMEпридает окну толстую рамку, константаWSSYSMENUснабжает окно системным меню, константаWSVSCROLLотвечает за появление в правой части окна линейки вертикальной прокрутки и т. д. Операция побитового ИЛИ (знак | ) позволяет “набрать” требуемый комплект свойств.

Обычно главное окно описывается составной константой WSOVERLAPPEDWINDOW, в которую входят элементы стиляWSOVERLAPPED(перекрывающееся окно),WSCAPTION(строка заголовка),WSSYSMENU(системное меню),WSTHICKFRAME(толстая рамка),WSMINIMIZEBOX(кнопка минимизации, т. е. свертывания окна в пиктограмму) иWSMAXIMIZEBOX(кнопка максимизации, т. е. развертывания окна на весь экран). Если требуется создать главное окно с меньшим количеством элементов, весь необходимый набор можно указать явным образом. Так, для создания главного окна без кнопки максимизации константа стиля должна быть такой:

WS_THICKFRAME | WS_SYSMENU | WS_MINIMIZEBOX

(строка заголовка появляется в главном окне в любом случае, а константа WSOVERLAPPEDравна нолю, и ее указание не влияет на стиль).

С другой стороны, воспользовавшись операторами побитовых преобразований И (&) и НЕ (~), можно не набирать заново всю комбинацию констант, а просто исключить ненужный элементWSMAXIMIZEBOXиз полного набора:

WS_OVERLAPPEDWINDOW & ~WS_MAXIMIZEBOX

Следующие четыре параметра определяют горизонтальную и вертикальную координаты левого верхнего угла окна относительно начала экрана, а также размеры окна по горизонтали и вертикали (в пикселах).

В качестве восьмого параметра указывается дескриптор родительского окна. Для главного окна, у которого нет родителя, используется константа HWNDDESKTOP, равная 0.

Следующий параметр позволяет задать меню окна. Если меню нет (как в нашем случае) или используется меню класса, заданное в структуре WNDCLASS, этот параметр должен быть равенNULL.

Десятый параметр идентифицирует экземпляр приложения. Значение дескриптора приложения было получено нами через аргумент hInstфункцииWinMain().

Последний параметр является адресом дополнительных данных, которые часто не требуются; соответственно мы указали “пустой” адрес (NULL).

Функция CreateWindow()возвращает (при успешном выполнении) дескриптор созданного окна. Этот дескриптор, поступающий в нашем примере в локальную переменнуюhwnd,передается затем в функциюShowWindow(), которая организует вывод созданного окна на экран. В качестве второго параметра этой функции указывается режим показа окна. Использованная в примере константаSWSHOWNORMALвыводит окно с теми размерами, которые указаны в параметрах функцииCreateWindow().

Создав главное окно приложения и выведя его на рабочий стол, необходимо организовать цикл обработки сообщений.