Компьютерные книги
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Графика -> Гончаров Д. -> "DirectX 7.0 Для программистов" -> 13

DirectX 7.0 Для программистов - Гончаров Д.

Гончаров Д., Салихо Т. DirectX 7.0 Для программистов — Спб.: Питер, 2001. — 528 c.
ISBN 5-318-00173-4
Скачать (прямая ссылка): dirext7dlyaprogrammistov2001.djvu
Предыдущая << 1 .. 7 8 9 10 11 12 < 13 > 14 15 16 17 18 19 .. 229 >> Следующая

Создание окна
Создание окна осуществляется при помощи функции, обладающей массой параметров:
HWND Cr?ateWindowEx(
DWORD dwExStyle. // Дополнительный стиль окна
LPCTSTR lpClassName, // Класс окна
Базовое приложение для Windows 9X/NT
31
LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent,
HMENU hMenu,
HINSTANCE hlnstance, LPVOID IpParam
// Текст заголовка // Стиль окна
// Координаты расположения окна // Ширина и высота // Дескриптор родительского окна // Дескриптор меню // Дескриптор экземпляра // Дополнительные данные
);
Пример использования этой функции достаточно щедро комментирован, но необходимо обратить внимание на несколько моментов.
Первый и четвертый параметры функции представляют собой расширенный и основной стили окна (расширенные начинаются с WS_EX_, а основные с WS ). Стиль WS_E Х_Т OP MOST говорит о том, что окно будет располагаться поверх других окон, не имеющих этого стиля, даже в том случае, если оно неактивно. Стиль WS P0PUP служит для указания окна «минимальной функциональности», это просто всплывающее окно, у которого нет ни заголовка (стиль WS CAPTION), ни границ (стиль WS B0RDER), ни кнопок минимизации и максимизации (стили WS MAXIMIZEBOX и WS MINIMIZEBOX). Все эти стили могут указываться вместе с WS P0PUP и объединяться логической операцией ИЛИ (|). Но для нашего примера этого не нужно. Нам необходим абсолютно черный экран без каких бы то ни было признаков интерфейсных элементов. Эта цель легко достигается установкой нужных стилей окна и его размера. Для того чтобы окно занимало весь экран, в качестве координаты левого верхнего угла указывается точка (0,0), а в качестве ширины и высоты окна — ширина и высота экрана. Узнать размеры экрана достаточно просто. Для этого нужно воспользоваться функцией int GetSystemMetrics(int nlndex);
получающей в качестве параметра показатель, характеристику которого нужно определить. Показатели SM CXSCREEN и SMCYSCREEN указывают на необходимость узнать ширину и высоту в точках экрана первичного монитора.
Из оставшихся параметров функции CreateWindowEx для целей изложения представляют интерес второй и третий — имя класса окна и заголовка окна соответственно, а также предпоследний, в котором опять-таки нужно передать дескриптор экземпляра приложения.
Если все прошло удачно и ничто не помешало созданию нового окна, то как результат выполнения функции возвращается его дескриптор типа HWND. В случае неудачи возвращается NULL.
Окно создано, но на экране оно еще не появилось. Для этого используется функция
BOOL ShowWindowC
HWND hWnd, //Дескриптор окна
int nCmdShow //Способ отображения окна
В первом параметре она получает дескриптор вновь созданного окна, а во втором — одну из констант SW_, указывающих на способ отображения окна. Самый обычный способ — просто передать в ShowWindow последний параметр функции WinMain.
Оставшаяся функция
BOOL UpdateWindowC HWND hWnd )
);
32
Урок 1 • Основы программирования на C/C++ для Windows 9X/NT
заставляет окно обновить свою клиентскую область, но поскольку наша программа не занимается графическим выводом, то вызов этой функции — скорее дань традиции.
Цикл выборки сообщений
Ну вот мы и подошли к самому главному — следующие несколько строк представляют собой сердце любой Windows-программы. Именно этот цикл, называемый циклом выборки сообщений, позволяет программе существовать, а неправильно построенный, он может стать причиной многих неожиданных событий — забавных и не очень.
whi1e(GetMessage(&msg,NULL.О,0)){ТranslateMessage(&msg);
DispatchMessage(&msg); }
Здесь уместно отвлечься и обсудить пару важных вещей. Windows представляет собой событийно-ориентированную систему. Что это значит? В течение всей своей жизни Windows-приложение получает сообщения (уведомляющие его о наступлении каких-то событий), на которые приложение реагирует определенным образом. Или не реагирует (еще точнее — реагирует стандартным образом). Все зависит от целей этого приложения. Например, программе, не имеющей главного окна, нет большого смысла реагировать на изменение разрешения экрана.
Чтобы сообщение было получено программой, в наличии должны иметься два компонента: точка назначения (участок кода, которому собственно и передаются сообщения) и механизм передачи (программа должна сама приложить определенные усилия, чтобы получить предназначенные ей сообщения). Точка назначения представляет собой оконную процедуру. Именно она получает в качестве аргументов сообщение, адресованное окну, с которым она связана, и сопутствующие этому сообщению параметры. Механизм передачи представлен двумя способами: синхронным и асинхронным.
Синхронный способ реализуется в случае вызова оконной процедуры непосредственно операционной системой Windows. Примером этому служит функция UpdateWindow. Она вызывает оконную процедуру, передавая ей в качестве параметра сообщение WM PAINT, требующее прорисовки рабочей области окна. Другой способ послать оконной процедуре синхронное сообщение — воспользоваться функцией
Предыдущая << 1 .. 7 8 9 10 11 12 < 13 > 14 15 16 17 18 19 .. 229 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Завалишин Д. "Интернетско-русский разговорник" (Web-программирование)

Заенцев И.В. "Нейронные сети: основные модели" (Web-программирование)

Владимиров А.А. "Wi-фу: «боевые» приемы взлома и защиты беспроводных сетей" (Web-программирование)

Вьейра Р. "SQL Server 2000. Программирование в 2 ч." (Web-программирование)

Веллинг Л.Т. "Разработка web приложений с помощью php и mysql" (Web-программирование)
Авторские права © 2013 ComputersBooks. Все права защищены.

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed