Немного о демонстрационном приложении.
Немного о демонстрационном приложении.
Любой автор статьи рано или поздно сталкивается с нелегким вопросом: какую среду разработки использовать для иллюстрирования излагаемого материала. Даже после выбора Visual C++ в качестве базы остается несколько альтернативных путей: уж больно много расплодилось различных библиотек и frameworks. Можно выделить 4 наиболее заметных (сразу же отмечу их недостатки и достоинства):
• Чистое API приложение. Небольшое по размеру получаемого исполняемого файла, теоретически легко переносимое. Исходный код, правда, компактностью не отличается…
• MFC приложение. Наиболее распространенный выбор. Сейчас уже трудно найти компьютер, на котором отсутствует mfc42.dll, хотя, распространяя приложение, вы должны предусмотреть все варианты. К недостаткам можно отнести некоторую угловатость и тяжеловесность исходников.
• WTL (Windows Template Library) приложение. Замечательная штука, но почему-то еще не все люди слышали о WTL, и, что еще более печально, не у всех она установлена.
И, наконец, ATL приложение. Наиболее любимый мною подход, пригодная (вопреки общему мнению) для создания практически любого Windows-приложения. К сожалению, мастер ATL из комплекта Visual C++6 не поддерживает генерацию не-COM приложения.
После долгих размышлений я остановился на последнем варианте. Как говорится, читателю все равно, а мне приятно. Шутка. На самом деле, я действительно считаю, что этот подход позволил мне сделать код максимально понятным, и человек, не измученный нарзаном в виде MFC, разберется там без особых проблем. Если вы ненавидите ATL – не читайте эту статью дальше. Чтобы внести некоторую ясность и определенность, спешу представить вашему вниманию диаграмму классов для демо-приложения. Выполнено в Rational Rose 2000 – нотация Буча.
Несколько комментариев по назначению реализованных классов:
• CMainDlg – Главный класс приложения. Унаследован от CDialogImpl и создается в функции WinMain как немодальный диалог. Содержит в себе один экземпляр класса C3DGraphic, один C3DGraphFrame, 4 немодальных диалога редактирования свойств (CMaterialPropsWindow, CLightPropsWindow, CBackColorWindow and CFunctionTypeWindow) и 3 объекта 3D функций (CSplashFunction, CPlaneFunction and CParabaloidFunction).
• CPropertyWindow – Базовый класс для всех окон редактирования свойств. Унаследован от CDialogImpl.
• C3DFunction – Базовый абстрактный класс, определяющий интерфейс получения информации о какой-либо функции 2-х переменных.
• CPropertyWindowNotify – Абстрактный класс-интерфейс, реализуемый клиентами окон свойств. Через этот интерфейс клиенты уведомляются об изменениях, происходящих со свойствами.
• CD3D8Application – Весьма простой класс-обертка для управления жизнью и смертью IDirect3D8 объекта.
• C3DGraphFrame – Окно, в котором будет отображаться результирующая 2D проекция трехмерного изображения. Говоря в терминах MFC, класс вида для трехмерного графика.
• C3DGraphic – Наиболее значимый и нагруженный класс, выполняющий всю основную работу по построению и обработке 3D картинки. Именно он реализует операции управления светом, свойствами материала, рендеринга и тому подобные. Собственно, ради него все и затевалось…
То ли Микеланджело, то ли еще кого-то из великих однажды спросили, как создать скульптуру. Великий, недолго думая, ответил: "Возьмите большой камень и удалите все лишнее." Окинув взглядом все вышеизложенное, можно сделать простой вывод: демо-приложение является ни чем иным, как обычным ATL EXE COM сервером, из исходного кода которого хитрой рукой автора было удалено все относящееся к COM технологии. Построение такого приложение само по себе является интересной задачей, но мы не скульпторы, так что подробности оставим в стороне. Тем более, что тема моей статьи все-таки DirectX, а не ATL. Вот сейчас – как раз об этом…
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Как обеспечить в приложении возможность подключения модулей
Как обеспечить в приложении возможность подключения модулей Подключаемый к приложению модуль является динамической библиотекой, которая реализует какой-нибудь один или несколько интерфейсов. Интерфейс — это класс, содержащий только чисто виртуальные функции. Связь
Обновление записей в приложении просмотра данных
Обновление записей в приложении просмотра данных До сих пор в приведенных ранее примерах нам удавалось только извлекать и просматривать данные. А изменять данные можно было только в элементах пользовательского интерфейса, но их нельзя было сохранить (зафиксировать) в
1.1.4. Еще немного терминов
1.1.4. Еще немного терминов В языках, подобных C++, существует понятие абстрактного класса. Такому классу разрешается наследовать, но создать его экземпляр невозможно. В более динамичном языке Ruby такого понятия нет, но если программист пожелает, то может смоделировать его,
Немного о сканировании
Немного о сканировании Для начала несколько слов о сканировании вообще и о решении некоторых проблем, связанных с ним. Мы не будем здесь рассматривать порядок подключения различных сканеров и технологию сканирования, для этого есть другие книги. Остановимся только на
Запись Audio CD в приложении Nero Burning ROM
Запись Audio CD в приложении Nero Burning ROM 1. Вставьте чистый диск в записывающий привод компьютера и запустите программу Nero StartSmart.2. Перейдите на вкладку Rip and Burn (Перенос и запись).3. Щелкните правой кнопкой мыши на задании Burn Audio CD (Запись аудио-диска). В открывшемся контекстном
Запись Audio CD в приложении Nero Express
Запись Audio CD в приложении Nero Express Диск в формате Audio CD можно записать и в приложении Nero Express. Для этого нужно выполнить следующее.1. Вставьте чистый диск в записывающий привод компьютера и запустите программу Nero StartSmart.2. Перейдите на вкладку Rip and Burn (Перенос и запись).3.
1.4. Немного о комментариях
1.4. Немного о комментариях Комментарии помогают человеку читать текст программы; писать их грамотно считается правилом хорошего тона. Комментарии могут характеризовать используемый алгоритм, пояснять назначение тех или иных переменных, разъяснять непонятные места.
16.1. Немного о программе
16.1. Немного о программе OOo Calc (Электронные таблицы) — это вторая наряду с OOo Writer часто используемая программа из пакета OpenOffice (рис. 16.1). Программа походит на Microsoft Excel, поэтому с ней работать сможет любой, кто хотя бы раз видел старый добрый Excel. Как электронная таблица, Calc
1. Немного о C++
1. Немного о C++ Несмотря на все многообразие средств, предоставляемых Си++, совершенно необязательно использовать их все сразу. Первым шагом при переходе от Си к Си++ может стать изменение расширений имен исходных файлов ваших программ. Вместо традиционного расширения C в
1.1. Немного об оформлении
1.1. Немного об оформлении Объем работы обычно либо оговаривают с руководителем, либо задают соответствующими методическими указаниями. Чаще всего реферат не должен превышать 15–20 страниц, курсовая – 25–30, а дипломная работа – 90-100.Работу оформляют на компьютере с помощью
Немного о реквизите
Немного о реквизите О реквизите сейчас и правда будет совсем немного, поскольку более детально работа с ним описана в следующей главе. Сейчас же стоит упомянуть, что микростоковый фотограф отличается, пожалуй, наибольшими запасами реквизита в сравнении со всеми
Немного о Wi-Fi
Немного о Wi-Fi Под термином Wi-Fi (Wireless Fidelity) понимается целая линейка протоколов беспроводной передачи данных, которые, как правило, используются для соединения компьютеров. Самым популярным стандартом Wi-Fi на сегодняшний день является IEEE 802.11b, имеющий максимальную скорость
1.1. Немного о компьютере
1.1. Немного о компьютере Во все времена человек пытался облегчить себе выполнение тех или иных работ, в результате чего появлялись различные приспособления. Однако процессы становились все сложнее, и существующие механизмы уже не справлялись со своими задачами и не
Немного передохнем
Немного передохнем – Ну, как дела?– Да как тебе сказать… Все нормально вроде, вот только пальцы болят…– А с чего это вдруг?– Да вчера с друзьями в чате встретился, так всю ночь песни