Что
нужно знать для создания DirectX-приложений на C++ в среде
|
||
Урок
4 Создание Win32-приложений. Стандартные диалоги. Изучение сопутствующих конструкций языка. Консольные Win32-приложения. Указатели. Ссылочный тип. Массивы. |
||
Данный урок является введением в программирование на C++ в MSVS 2008 Вам нужно иметь установленную среду Microsoft Visual Studio 2005 или 2008 (можно триал), и DirectX SDK 9 версии, или лучше самой последней - DirectX SDK August 2008. |
||
[назад] [далее] [к содержанию] | ||
Мы рассматриваем основы программирования на C++ в среде программирования MSVS 2008 | ||
25/11/2008, 27/11/2008 Общие окна диалога для открытия и сохранения файла при использовании обработки пунктов меню Save и Load Работа с общими диалогами в Win32-приложениях описана в разделе MSVS 2008 > Help > Contents > Win32 and COM Development > User Interface > Windows User Experience > Windows Management > Windows User Interface > User Input > Common Dialog Box Library |
||
//++ Учебное задание: использование общего диалога для выбора цвета Работа с общим диалогом выбора цвета описана в разделе MSVS 2008 > Help > Contents > Win32 and COM Development > User Interface > Windows User Experience > Windows Management > Windows User Interface > User Input > Common Dialog Box Library > Common Dialog Box Library Overviews > Color Dialog Box Сопутствующие необходимые знания chcol.lpCustColors - использование массивов Требуется указатель на массив из 16-ти элементов типа COLORREF (статичный или локальный) Работа с массивами в приложениях Win32 (Native Development) описана в разделе справки - MSVS 2008 > Help > Contents > Development Tools and Languages > Visual Studio > Visual C++ > Reference > C/C++ Languages > Declarators > Arrays |
||
Работа с примерами кода в консольных приложениях для лучшего уяснения отдельных элементов Visual C++ Работа с консольными приложениями позволит Вам освоить наиболее общие конструкции языка Visual C++ не вдаваясь в детали создания интерфейса пользователя. Для создания консольного приложения Win32 нужно закрыть текущий солюшн (Close solution) с которым Вы работали и выбрать File > New > Project > Win32 > Win32 Console Application, указать имя и папку для создаваемого проекта. Добавить в файл с исходным кодом необходимый код, выполнить сборку Build, а для просмотра результатов работы такого приложения выполнять запуск из командной строки Пуск > Все программы > Стандартные > Командная строка |
||
Например Ваш скомпилированный файл находится в папке H:\Andrew\work\gamecre\DXSDK_Aug2008\MyWorks\NuPogodiFull\NuPogodiFull_vs2008\ training\LearnPointers\Debug |
||
Тогда, в окне Коммандной строки набираем H: и нажимаем Enter. Тем самым переходим на диск H. копируем нужный путь прямо из проводника. в коммандной строке набираем cd и правой клавишей мыши вызываем контекстное меню и вставляем скопированный путь получается cd H:\Andrew\work\gamecre\DXSDK_Aug2008\MyWorks\NuPogodiFull\NuPogodiFull_vs2008\ training\LearnPointers\Debug нажимаем Enter. Теперь мы находимся в этой папке. Можете применить команду dir и вы увидите содержимое этого каталога. Для очистки экрана консоли удобно использовать команду очистки экрана cls Теперь Вам остается только набрать имя нужного exe-файла любыми буквами (хоть большими, хоть маленькими, хоть вразнобой - никакой разницы, т.к. консоль запускает файлы по именам без учета регистра (заглавные/строчные) Далее нажать Enter и увидеть результат работы Вашего консольного приложения. |
||
Далее остается только экспериментировать - изменять код, выполнять новую сборку и запускать созданное из консоли наблюдая и анализируя полученные результаты. |
||
Пример кода для понимания указателей (Pointers) - пример взят из MSVS Documentation Для проверки и экспериментов с кодом используйте консольное приложение Win32 |
||
//
pointer.cpp // compile with: /EHsc #include <iostream> int main() { int i = 1, j = 2; // локальные переменные, размещаются в стеке int *p; // указатель на целое (int)
// a pointer may be assigned to "point to" the value of //
указателю может быть присвоен адрес переменной
// since j was on the stack, this address will be somewhere //
поскольку j размещено в стеке, адрес будет представлять
с использованием
// The * (indirection operator) can be read as "the value //
Оператор * (оператор разыменования) может быть читаем как "указатель
на значение"
// changing j will change the result of the indirection //
изменение j изменит результат применения оператора разыменования
// The value of j can also be changed through the pointer //
значение j может быть также изменено посредством указателя
// allocate memory on the heap for an integer, //
выделение памяти на куче (heap) для целого и,
// print the pointer and the object pointed to //
печать указателя и объекта на который указывает адрес // free the memory pointed to by p //
освобождение памяти на которую указывает p
// At this point, dereferencing p with *p would trigger // ошибку нарушения прав доступа к памяти во время выполнения программы //
Pointer arithmetic may be done with an array declared //
Вычисления с указателями могут выполняться для массива объявленного
// A common expression seen is dereferencing in combination //
Часто встречаемое выражение разыменования в комбинации // the following is a string copy operation //
операция копирования строки выглядит так - // s2 was copied into s1, so now they are both equal to "dog" //
s2 копируется в s1, так что теперь обе строки содержат слово "dog" |
||
А вот пример демонстрирующий использование указателей в структурах данных, в данном случае это связанный список. Пример также взят из MSVS Documentation |
||
//
pointer_linkedlist.cpp // compile with: /EHsc #include <iostream> using namespace std; struct
NewNode { void
WalkList(NewNode * ptr) { void
AddNode(NewNode ** ptr) {
if (*ptr == 0)
walker->node = MyNewNode; int
main() { |
||
примеры ссылочных (reference) типов - int
&i; |
||
читается как ссылка (адрес) на объект i. Синтаксически работа со ссылками полностью аналогична работе с объектами - //
references.cpp int
main() {
printf_s("%d\n", s.i);
SRef.i = 4; |
||
Определение массивов, работа с массивами объявление массива и работа с массивом времени выполнения - //
arrays.cpp int
main() { int* myarr = new int[size]; //объявляем массив из size элементов с типом int и выделяем ему память на куче (heap)
for (i = 0 ; i < size ; i++)
for (i = 0 ; i < size ; i++)
delete [] myarr; //освобождаем
память |
||
После получения необходимой информации из документации и экспериментов с учебными примерами кода возвращаемся к нашей задаче - //++ Учебное задание: использование общего диалога для выбора цвета Работа с общим диалогом выбора цвета описана в разделе MSVS 2008 > Help > Contents > Win32 and COM Development > User Interface > Windows User Experience > Windows Management > Windows User Interface > User Input > Common Dialog Box Library > Common Dialog Box Library Overviews > Color Dialog Box Сопутствующие необходимые знания chcol.lpCustColors - использование массивов Требуется указатель на массив из 16-ти элементов типа COLORREF (статичный или локальный) Реализация данной задачи - вывод диалога выбора цвета например при нажатии пункта меню Save будет выглядеть так (код нужно добавить в функцию WndProc) - показана в следующем уроке |
||
в следующем уроке показана реализация выбора цвета из окна диалога цвета (Color Dialog) и смена фона окна приложения в соответствии с выбранным цветом |
||
[назад] [далее] [к содержанию] |
игра
|
||||||||||
видео-рассказ, уроки godot, виртуальный помощник по поиску информации
|
||||||||||
игры Многоликий: dress - hordes эпизоды с 1 по 4
|
||||||||||
игры, музыкальные клипы
|
||||||||||
музыкальный клип, игры
|
||||||||||
разработка игр, анимационный фильм, новогодняя дискотека 2020 - песни на итальянском, игра про лифт
|
||||||||||
игры, инструменты разработки, анимационный фильм, фильм.
|
||||||||||
игры
|
||||||||||
игры в браузере
|
||||||||||
игры в браузере
|
||||||||||
игры в браузере
|
||||||||||
игры в браузере
|
||||||||||
игры в браузере (3), создание музыки в браузере (1)
|
||||||||||
игры в браузере
|
||||||||||
игры в браузере
|
||||||||||
игры в браузере
|
||||||||||
игры в браузере (3), скачиваемые (1)
|
||||||||||
игры в браузере
|
||||||||||
игры в браузере, скачиваемые игры
|
||||||||||
игры в браузере
|
||||||||||
игры в браузере
|
||||||||||
полезный софт, игры в браузере
|
||||||||||
сервисы, игры
|
||||||||||
игры, программы
|
||||||||||
поздравления, уроки рисования, уроки создания сайтов
|
||||||||||
комиксы, музыка, рассказы
|
||||||||||
игра для разработки, калькулятор услуг, cms, комикс
|
||||||||||
игры для разработки, комиксы
|
||||||||||
игры шарики и ямки, комиксы про Костю Коробкина, ria xxl игра, fly snow 3d генератор эффектов снега, частиц и др. -
|
||||||||||
Создай свою игру на fle game engine -
|
||||||||||
Для создания сайта - модуль отзывов/комментариев для вашего сайта в составе megainformatic cms express files -
|
||||||||||
Уроки Flash, бесплатные Flash - игры.
|
||||||||||
Поддержка сайтом нескольких языков (multi lang), создание собственной системы личных кабинетов, соц. сети или фриланс - биржи (megainformatic cms social), создание сервиса коллективных покупок на базе megainformatic cms groupon, онлайн сервис подсчёта статистики ключевых слов в статьях вашего сайта keywords gen + описание кода данного сервиса, с возможностью бесплатно реализовать его аналог на своём собственном сайте.
megainformatic.ru/webjob/ - сервис для фриланс проектов - место встречи заказчиков и исполнителей |
||||||||||
Социальная сеть megainformatic.ru/webjob/
megainformatic.ru/webjob/ - сервис для фриланс проектов - место встречи заказчиков и исполнителей |
||||||||||
Системы управления сайтом, уроки
megainformatic cms admin - простая и компактная система для работы и управления сайтом |
||||||||||
|
||||||||||
|
||||||||||
megainformatic cms free и серия продуктов - Уроки Photoshop
Данная серия посвящена описанию приемов и методов создания изображений, с помощью инструментария программы Adobe Photoshop. Кроме того, многие описанные средства могут вам помочь при освоении и многих других программ для работы с растровой графикой - GIMP, Corel Photo Paint и других.
|
||||||||||
бесплатные игры 2d и 3d, а также эмулятор Ну, Погоди!
Это серия распространяемых бесплатно игр. Вы не только можете поиграть, но и скачать исходники, получив тем самым возможность внести изменения в игру или создать новую !!! (эмулятор Ну, Погоди! распространяется платно). |
||||||||||
серия игр про Веселого Буквоежку, и бесплатно распространяемая игра Нечто: Необъяснимое - в плену желаний
Здесь представлены новинки жанра - Говорящий Комикс, Настольная игра, А также продукт, который позволит Вам научиться создавать игры самостоятельно. Ну и конечно изюминка в своём роде - бесплатная игра - Нечто: Необъяснимое - в плену желаний |
||||||||||
Серия бесплатных онлайн уроков, посвященных 3ds max, photoshop, c++, directx, delphi и php.
Описаны практические примеры решения различных задач, возникающих при создании игр и сайтов. Продукты Набор разработчика и Ваше Визуальное Шоу распространяются платно. |
||||||||||
уроки и продукты различной тематики
Бесплатные Уроки Photoshop free, Бесплатные Уроки по программированию на delphi directx - Как создать игру Ну, Погоди!, Бесплатная Авторская музыка в формате mp3 - Музыкальные Миры, Платно распространяемый продукт megainformatic cms express - система для быстрого создания Вашего сайта на php + my sql. |
||||||||||
Проекты игр, уроки
Игра Веселый Буквоежка, уроки delphi directx 8.1 для начинающих (описываются основы 3d игр), моделируем девушку в 3d studio max, уроки музыки - пишем музыку в Fruity Loops Studio |
||||||||||
|