Win32 API. Окна - Создание основного окна
ОГЛАВЛЕНИЕ
Страница 28 из 30
Создание основного окна
Первое окно, которое создает прикладная программа - обычно основное окно(main window). Вы создаете основное окно, используя функцию CreateWindowEx, которая определяет класс, имя , стили окна, размер, позицию, дескриптор меню, дескриптор экземпляра и данные создания. Основное окно принадлежит определенному прикладной программой классу окна, таким образом, Вы должны зарегистрировать класс окна и предоставить оконную процедуру для класса перед созданием основного окна.Большинство прикладных программ обычно использует для создания основного окна стиль WS_OVERLAPPEDWINDOW. Этот стиль дает окну строку заголовка, меню окна, рамку установки размеров окна, кнопки свертывание и развертывания окна. Функция CreateWindowEx возвращает дескриптор, который уникально идентифицирует окно.
Следующий пример создает основное окно, принадлежащее к классу окна определенному прикладной программой. Имя окна, " Основное Окно ", появится в строке заголовка окна. Объединяя стили WS_VSCROLL и WS_HSCROLL со стилем WS_OVERLAPPEDWINDOW, прикладная программа создает основное окно с горизонтальными и вертикальными линейками прокрутки в дополнение к компонентам, предоставляемым стилем WS_OVERLAPPEDWINDOW. Четырехкратное повторение константы CW_USEDEFAULT устанавливает начальный размер и позицию окна в зна-чения, определенные системой по умолчанию. Устанавливая значение ПУСТО (NULL), вместо дескриптора меню, окно получит меню, определенное для класса окна.
HINSTANCE hinst;
HWND hwndMain;
// Создание основного окна.
hwndMain = CreateWindowEx(
0, // расширения стилей нет
"MainWClass", // имя класса
"Основное окно", // имя окна
WS_OVERLAPPEDWINDOW | // перекрывающее окно
WS_HSCROLL | // горизонтальная линейка прокрутки
WS_VSCROLL, // вертикальная линейка прокрутки
CW_USEDEFAULT, // горизонтальная позиция по умолчанию
CW_USEDEFAULT, // вертикальная позиция по умолчанию
CW_USEDEFAULT, // ширина по умолчанию
CW_USEDEFAULT, // высота по умолчанию
(HWND) NULL, // окно не родительское или
// имеющее в собственности окна
(HMENU) NULL, // используемый класс меню
hinstance, // дескриптор экземпляра
NULL); // нет данных создания окна
if (!hwndMain)
return FALSE;
// Показывает окно, использующее флажок, определенный программой,
// которая запускает прикладную программу и передает в приложение
// сообщение WM_PAINT.
ShowWindow(hwndMain, SW_SHOWDEFAULT);
UpdateWindow(hwndMain);
Обратите внимание, что предшествующий пример вызывает функцию ShowWindow после создания основного окна. Это сделано потому, что Windows автоматически не отображает на экране основное окно после его создания. Передавая флажок SW_SHOWDEFAULT в ShowWindow, прикладная программа позволяет программе, которая запустила приложение, установить начальное состояние показа основного окна. Функция UpdateWindow посылает окну свое первое сообщение WM_PAINT.