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

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

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

На первый взгляд может показаться, что программа представлена множеством функций. Однако главных функций здесь две. Это WinMain и WndProc. Первая является точкой входа в программу, вторая обеспечивает реальную функциональность приложения и называется оконной процедурой. Оставшиеся небольшие функции реализуют реакцию программы на «внешние раздражители», которые в Windows называются сообщениями. В течение всей жизни программы операционная система посылает ей сообщения, информируя об изменениях, происходящих вокруг. Эти сообщения выбираются из очереди сообщений, которую операционная система организует для каждой программы, а затем передаются в оконную процедуру, где нужным образом обрабатываются либо передаются обратно в Windows для обработки по умолчанию.
Заголовочные файлы
Итак, любая программа на C/C++ начинается с подключения одного или нескольких заголовочных файлов. В случае нашей программы их два — WINDOWS.Н и WIND0WSX.H. Первый из них представляет собой заголовочный файл, обязательно включаемый в любую Windows-программу. Для предыдущих версий операционной системы он содержал огромное количество объявлений типов, прототипов функций и т. д. На данный момент он включает лишь ссылки на другие заголовочные файлы (вы наверняка не удивитесь, узнав, что заголовочных файлов для Windows достаточно много). Эти файлы подключаются в зависимости от множества макроопределений. Среди них — WIN32LEANANDMEAN. Определение этого макроса перед включением файла WINDOWS.Н позволяет уменьшить количество используемых компонентов и тем самым сократить время на компиляцию и построение приложения.
Один из подключаемых таким образом файлов — WINDEF.H. Просматривая программу, вы наверняка обратили внимание на обилие странных типов, используемых
28
Урок 1 • Основы программирования на C/C++ для Windows 9X/NT
для получения параметров функциями и возвращения результата. Большинство из этих странных типов определены в данном заголовочном файле. Два следующих макроопределения взяты из него:
#define CALLBACK _stdcall #define WINAPI _stdcall
Обратите внимание на две вещи: во-первых, типы CALLBACK и WINAPI на данный момент ничем не отличаются кроме названия, во-вторых, и тот и другой тип сообщают компилятору, что для функции, помеченной этим макросом, будет выполняться соглашение о вызове_stdcall. В Win32 используется такой способ вызова
функций, представляющий собой нечто среднее между_cdecl и_pascal, взявший от этих, традиционных для DOS, способов вызова функций самое лучшее. Часто типы, определенные в WINDEF.H, являются просто новыми именами для старых, хорошо знакомых типов. Например: typedef unsigned long DWORD; typedef int BOOL; typedef int INT; typedef unsigned int UINT;
С другими, специфичными для Windows типами, такими как HWND, HCURSOR, HBRUSH и многими другими, не все так просто. В зависимости от наличия макроса STRICT (он определен в самом начале листинга 1.1) эти типы могут представлять собой либо простые дескрипторы типа HANDLE, либо указатели на специально созданные структуры. Поскольку языки C/C++ способны отслеживать соответствие типов на уровне указателей, наличие макроса STRICT обеспечивает более строгую проверку типов. Например, при определенном STRICT компилятор выдаст сообщение об ошибке при присваивании объекта типа HBRUSH объекту типа HCURSOR. Если же STRICT не определен, то никакой ошибки компилятор не усмотрит.
_СОВЕТ Используя макрос STRICT, определенный ПЕРЕД включением файла WIND0WS.H, мож-
но обезопасить себя от группы распространенных ошибок, связанных с присваиванием объекту одного типа значения объекта другого типа (как правило, вследствие невнимательности).
В другом подключаемом файле, WIND0WSX.H, содержатся многие полезные макросы и, в частности, распаковщики сообщений, о которых речь пойдет ниже.
Функция Win Main
Практически любая программа, написанная для Windows, содержит две основные функции — WinMain и окопную процедуру, каждая из которых выполняет свои задачи.
Функция, имеющая прототип:
int WINAPI WinMain(HINSTANCE hlnst, HINSTANCE hPrevInst, LPSTR lpzCmdLine. int nCmdShow);
вызывается операционной системой и является точкой входа в программу. Если быть честным до конца, то вызывается она некоторой стартовой функцией из стандартной библиотеки C/C++, но для целей изложения это не принципиально. Эта функция представляет собой аналог функции main для программ DOS. Первые два параметра — дескрипторы текущего экземпляра приложения и предыдущего запущенного экземпляра (если он есть). В приложениях Win32 второй параметр
Базовое приложение для Windows 9X/NT
29
всегда равен NULL, поэтому полагаться на него не стоит. В случае если потребуется определить наличие в памяти уже запущенных экземпляров данной программы, придется воспользоваться другими способами. Дескриптор экземпляра представляет собой уникальное значение, которое впоследствии используется во многих местах. Третий параметр функции является указателем на завершающуюся нулем строку, в которой содержится командная строка запущенного приложения, исключая название этого приложения. Последний параметр указывает на способ отображения главного окна программы и может принимать одно из перечисленных в табл. 1.1 значений.
Предыдущая << 1 .. 5 6 7 8 9 10 < 11 > 12 13 14 15 16 17 .. 229 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Завалишин Д. "Интернетско-русский разговорник" (Web-программирование)

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

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

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

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

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed