Графика для Windows средствами DirectDraw
Шрифт:
Все проекты, созданные на базе прилагаемого к этой книге AppWizard, обладают одним общим недостатком — отсутствием полноценной поддержки прекомпилированных заголовков (точнее, это относится не к программам на CD-ROM, а к новым проектам, сгенерированным в DirectDraw AppWizard). Все, что я могу вам посоветовать, — включить эту возможность после создания нового проекта (сделать это несложно, но все-таки лучше, если бы это происходило автоматически). Сейчас я расскажу о том, как настроить прекомпилированные заголовки для только что созданного проекта с именем Sample.
Рис. А.13.
После того, как вы создадите новый проект с помощью DirectDraw AppWizard, выполните команду Project|Settings и перейдите на вкладку C/C++. Затем выберите из списка Category строку Precompiled Headers. По умолчанию устанавливается переключатель Automatic use of Precompiled Headers, однако автоматическая настройка прекомпилированных заголовков намного уступает ручной. Стандартный вид вкладки C/C++ окна Project Settings изображен на рис. А.13.
Выберите из расположенного слева списка Setting For строку All Configurations. Благодаря этому мы сможем разрешить применение прекомпилированных заголовков как в окончательной, так и в отладочной конфигурации. Теперь установите переключатель Use precompiled header file и введите в поле Through header строку headers.h — имя файла, в котором будут храниться данные прекомпилированных заголовков.
Теперь раскройте в иерархическом дереве слева узел Sample — появятся три узла следующего уровня. Раскройте узел Source Files. Выберите файл Headers.cpp, один раз щелкнув на его строке. Затем установите переключатель Create precompiled header file и введите в поле Through header строку headers.h. Диалоговое окно после внесения всех необходимых изменений изображено на рис. А.14.
Рис. А.14. Вкладка C/C++ окна Project Settings после внесения изменений
Наконец, нажмите кнопку OK и откомпилируйте проект. Обратите внимание на то, что сначала компилируется файл Headers.cpp. На этой стадии Visual C++ создает прекомпилированный заголовочный файл, что требует некоторого времени. Однако последующие модули компилируются быстрее, потому что заголовочные файлы уже были откомпилированы ранее. Также обратите внимание на то, что файл Headers.cpp почти не приходится компилировать, потому что он содержит только часто используемые, но редко изменяемые заголовочные файлы. Если теперь внести изменения в другие файлы проекта, они будут компилироваться быстрее.
И последнее замечание. Лучшими кандидатами для прекомпиляции являются заголовочные файлы MFC и DirectX (именно они включены в файл Headers.h во всех проектах на CD-ROM, а также в тех, что создаются DirectDraw AppWizard). Тем не менее, если эти файлы изменятся (например, из-за выхода новой версии Visual C++ или DirectX), вы должны обновить прекомпилированные заголовки командой Rebuild All.
Начиная с версии 4.2, Visual C++ содержит DirectX SDK. К сожалению, обычно в Visual C++ входит относительно старая версия SDK (Visual C++ 4.2 поставляется с DirectX 2 SDK, а Visual C++ 5.0 — с DirectX 3 SDK). Скорее всего, из-за этого вы будете работать с версией DirectX SDK,
Тем не менее при установке новой версии SDK часто возникают проблемы, потому что по умолчанию старые файлы DirectX не замещаются новыми. Это происходит из-за того, что Microsoft помещает файлы DirectX в стандартные каталоги include и lib (если файлы MFC хранятся в отдельных каталогах, почему Microsoft не могла сделать того же с файлами DirectX?).
Если вы столкнетесь с этой проблемой (это произойдет, когда программа, использующая новые возможности DirectX, откажется компилироваться), у вас есть два варианта:
• скопировать новые файлы DirectX SDK поверх старых;
• сделать так, чтобы новые каталоги SDK рассматривались раньше старых.
Первый вариант нежелателен, потому что стандартные файлы Visual C++ обычно не стоит изменять. Кроме того, вам придется заново копировать файлы с выходом каждой новой версии Visual C++ или DirectX SDK.
Лучше воспользоваться вторым вариантом. Для этого выполните команду Tools | Options и перейдите на вкладку Directories. Затем выберите каталог с файлами DirectX SDK и поместите его в списке над другими каталогами (с помощью кнопки). На рис. А.15 показано, как может выглядеть список каталогов после внесения необходимых изменений.
На рисунке изображены каталоги, которые Visual C++ просматривает в поисках включаемых файлов (список каталогов просматриваются сверху вниз). Кроме того, не забудьте аналогичным образом изменить порядок каталогов для библиотечных (LIB) файлов.
Рис. А.15. Вкладка Directories окна Options
ClassView — древовидный элемент окна рабочей области, в котором отображается список классов, входящих в проект (он достаточно удобен для перемещения по проекту). Узлы дерева соответствуют классам; раскрывая их, вы можете просмотреть члены класса. Хотя на первый взгляд ClassView Visual C++ 5.0 ничем не отличается от предыдущих версий, на самом деле он ведет себя несколько иначе.
В Visual C++ 5.0 ClassView отображает лишь те классы, чьи заголовочные файлы были явно включены в проект (командой Project|Add to Project|Files). Если в проект не включено ни одного H-файла, в ClassView не будет ни одного класса. Этим он отличается от Visual C++ 4.x, где выводились все классы из файлов проекта и тех файлов, от которых зависят файлы проекта. Это может показаться шагом назад, но на самом деле это новое поведение позволяет управлять составом классов, отображаемых в ClassView (в предыдущих версиях такого выбора не было).
При импортировании старых проектов в Visual C++ 5.0 по умолчанию отображаются все классы. Класс отсутствует в ClassView лишь в том случае, если CPP-файл был включен в проект без соответствующего H-файла.
Хотя Visual C++ 4.0 не используется в этой книге напрямую, ничто не помешает вам работать с ним. Но так как на CD-ROM находятся файлы проектов только для Visual C++ 5.0 (для которого обратная совместимость не предусмотрена), вам придется создать файлы рабочей области самостоятельно. Это делается так: