netlib.narod.ru | < Назад | Оглавление | Далее > |
В мире встречаются две категории программистов. Как мне кажется, соотношение между ними составляет примерно 50:50. Первые берут существующую программу и «рихтуют» ее до тех пор, пока она не станет делать то, что требуется. Представители второй категории предпочитают начинать работу «с пустого места» и делать все собственными руками. Я принадлежу к числу последних. Не люблю пользоваться чьим-нибудь кодом, потому что могу упустить какие-нибудь тонкости в его работе; а значит, дальнейшая отладка превратится в сущий кошмар. На тот случай, если вы не захотите взять готовую программу Basic и повозиться с ней, я опишу процесс ее построения (разумеется, пока вам придется пользоваться моей библиотекой 3dPlus, но к концу книги вы сможете написать свой вариант такой библиотеки). Если вас совершенно не интересует, как создавалось это приложение, пропустите данный раздел. Вы всегда сможете вернуться к нему в случае необходимости.
Для построения приложения Basic следует выполнить следующие действия:
С помощью Visual C++ MFC AppWizard (EXE) создайте однодокументное (SDI — Single Document Interface) приложение без поддержки баз данных и OLE. Можете также убрать из него панель инструментов, строку состояния, печать и объемные элементы управления. Получится простейшее приложение для Windows. Мой проект назывался Basic. Я выбрал вариант для работы с MFC в качестве совместно используемой библиотеки DLL (As A Shared DLL), но при желании можно осуществить статическую компоновку.
Исключите из проекта файлы для классов вида и документа. В моем случае эти файлы назывались BasicDoc.h, BasicDoc.cpp, BasicView.h и BasicView.cpp. Файлы следует удалить как из проекта, так и из рабочего каталога.
Аналогичным образом удалите файлы главного окна (обычно они называются MainFrm.h и MainFrm.cpp). Остаются два файла на C++: Basic.cpp и StdAfx.cpp.
Отредактируйте исходные файлы и уберите из них любые ссылки на заголовочные файлы классов документа, вида или главного окна. Обычно в этот момент я также удаляю некоторые ресурсы (скажем, окно диалога About), ненужные меню, строковые таблицы, однако большую часть этой работы можно проделать и позднее.
В файл StdAfx.h добавьте директивы для включения файлов mmsystem.h и d3drmwin.h. Заголовочный файл mmsystem используется в функциях для работы с джойстиком, которые понадобятся нам позднее, а в файле d3drmwin определяются все функции Direct3D.
Включите файл 3dplus.h в файл StdAfx.h или в Basic.h. Я включил его в Basic.h, чтобы при модификации библиотеки мне не пришлось заново строить все файлы приложения, над которым я работаю.
Отредактируйте функцию InitInstance в файле Basic.cpp так, чтобы она совпадала с приведенной в листинге 1.1. Кроме того, можно удалить код для окна диалога About (CAboutDlg).
Воспользуйтесь ClassWizard, чтобы добавить в Basic.cpp функцию-заглушку OnIdle.
Отредактируйте функцию OnIdle так, чтобы она совпадала с приведенной в листинге 1.1.
Выполните команду Settings меню Build, после чего включите библиотеки DirectX и библиотеку 3dPlus в список, находящийся в окне диалога. Во всех моих примерах присутствовали библиотеки 3dPlusd.lib, d3drm40f.lib, ddraw.lib и winmm.lib. Обратите внимание на то, что в проектах может использоваться как отладочная (3dPlusd.lib), так и окончательная (3dPlus.lib) версия библиотеки 3dPlus. В примерах я пользовался отладочной версией, чтобы вы могли работать со всей информацией о символьных именах и осуществлять трассировку в коде библиотеки. Каталоги, в которых находятся библиотеки и включаемые файлы, должны быть указаны в окне диалога Options. Об этом подробнее рассказывается далее в этой главе.
Обновите все связи и постройте приложение. Ваше приложение должно быть похоже на приведенную копию экрана.
ПРИМЕЧАНИЕ |
В некоторых файлах содержатся «заглушки» — например, пункты меню File, которые ничего не делают. Иногда я удалял неиспользуемые объекты. В других случаях я оставлял их, так как считал, что вы можете воспользоваться ими ( а заново добавить их к ресурсам существенно сложнее, чем удалить их). |
Возможно, вас пугает сама идея «выдирания» файлов из проекта, созданного AppWizard. Доверьтесь мне в этом! Если вы хорошо знакомы с AppWizard и библиотекой MFC, то сочтете это вполне обычным делом. Если же вы — новичок в MFC, то, возможно, вам стоит создать с помощью AppWizard новый проект, исследовать его файлы и ознакомиться с их содержимым, прежде чем браться за скальпель. Программа Scribble, входящая в число примеров Visual C++, отлично демонстрирует назначение всех этих файлов. Освоившись с архитектурой «документ/вид», вы лучше поймете, почему мы удалили эти файлы.
netlib.narod.ru | < Назад | Оглавление | Далее > |