Balls and holes PC game / Balls and Holes PC игра
Вакансии
Игродельня
Сегодня
22 ноября 2024
20:22
Вход Регистрация Забыли пароль ?

webinformatic - Музыкальные мир - композиция Морозное утро - 10 версий
        Мои Музыкальные Миры           [другие комп
подробнее...

Теги

сайты, игры, дизайн, продвижение, php, html, css, my sql, c++, delphi, photoshop, 3ds max, fl studio, трекерская музыка, уроки

Статьи сайта

webinformatic - Что нужно знать для создания сайта ? Глава 2 - Кодировки и DOCTYPE

webinformatic - Что нужно знать для создания сайта ? Глава 3 - Идём дальше - нанизываем новый код - где объявляются стили css и код javascript

webinformatic - Что нужно знать для создания сайта ? Содержание

webinformatic - Что нужно знать для создания сайта ? css - стили

webinformatic - preg_match или Использование регулярных выражений в php

webinformatic - статьи Тимонина Андрея - Flash. Содержание

webinformatic - статья Тимонина Андрея - Flash. Подготовка к работе.

webinformatic - статья Тимонина Андрея - Flash. Hello world.

webinformatic - статья Тимонина Андрея - Flash. Экспорт SWC библиотеки.

webinformatic - Тимонин Андрей - Несколько слов о себе

webinformatic - статьи Тимонина Андрея - уроки из области веб программирования, создания казуальных игр

webinformatic - статья Тимонина Андрея - Обеспечиваем доступ к объекту из любой точки программы. Singleton

webinformatic - статья Тимонина Андрея - Хронология работы программы. Создаем Лог

webinformatic - статья Тимонина Андрея - Поиск файлов. Получаем список файлов каталога.

webinformatic - статья Тимонина Андрея - Исключения. Создаем класс обработки исключений.

webinformatic - статья Тимонина Андрея - States. Создаем менеджер состояний игры.

webinformatic - статья Тимонина Андрея - Регистрация. Часть 1. Создаем страничку регистрации на сайте.

webinformatic - статья Тимонина Андрея - Регистрация. Часть 2. Создаем обработчик, и заносим информацию о пользователе в Б.Д.

webinformatic - статья Тимонина Андрея - Таймер. Выводим время игры.

webinformatic - статья Тимонина Андрея - DirectX9. Создаем основной класс обработки графики.

webinformatic - статья Тимонина Андрея - DirectX9. Создаем первое приложение.

webinformatic - Что нужно знать для создания сайта ? float - использование в css - стилях

webinformatic - Уроки Fruity Loops Studio (FL Studio) - урок 2 - пишем свою композицию COLD

webinformatic - Уроки Fruity Loops Studio (FL Studio) - урок 3 - экспериментируем с композицией COLD

webinformatic - Что нужно знать для создания сайта ? Стандартные шрифты для сайта

webinformatic - Что нужно знать для создания сайта ? ASC II Коды символов

webinformatic - Уроки Fruity Loops Studio (FL Studio) - урок 4 - пишем первый вариант композиции COLD

webinformatic - Популяризация Современных Научных Знаний и Размышления на околонаучные темы. СОДЕРЖАНИЕ

webinformatic - Популяризация Современных Научных Знаний и Размышления на околонаучные темы. Энергетический кокон

webinformatic - Модуль галерей для любой cms

webinformatic - Портфолио выполненных проектов сайтов и приложений

webinformatic - Мои Музыкальные Миры - страница 2

webinformatic - megainformatic cms rs

webinformatic - модуль Падающий снег

webinformatic - проект Open Shop

webinformatic - Рисуем красивую девушку всего за 6 шагов

webinformatic - Галерея красивых рисованных девушек

webinformatic - НОВОГОДНЕЕ ОБРАЩЕНИЕ СОЗДАТЕЛЯ webinformatic К ЖИТЕЛЯМ ПЛАНЕТЫ интернет

webinformatic - Отзывы оставленные пользователями как впечатление о проделанной работе или что-либо понравившееся на сайте

webinformatic - Уроки css - атрибут position

webinformatic - Ива Ден энд КуХа - КОДЕКС ФРИЛАНСЕРА - СОДЕРЖАНИЕ

webinformatic - Ива Ден энд КуХа - КОДЕКС ФРИЛАНСЕРА - Глава 1 - Обычный день

webinformatic - Ива Ден энд КуХа - КОДЕКС ФРИЛАНСЕРА - Глава 2 - Начало (begin)

Новогодняя дискотека 2013 на megainformatic точка ru

webinformatic - Программируем на C++ с использованием MFC

webinformatic - Программируем на C++ с использованием MFC - Создание MFC приложения

webinformatic - Программируем на C++ с использованием MFC - Создание MFC приложения - hello, world !

webinformatic - Как создать игру ? - Пишем игровой движок с нуля

webinformatic - Как создать игру ? - Пишем игровой движок с нуля - Вступление

webinformatic - Как создать игру ? - Пишем игровой движок с нуля - Общая структура будущего игрового движка

Разное

webinformatic - Как создать игру ? - Пишем игровой движок с нуля - DXUTMainLoop - цикл работы DirectX-приложения

webinformatic - Варианты макетов Психолог 911

webinformatic - Шаблоны для сайтов - что это и какие они бывают ?

webinformatic - Ива Ден энд КуХа - КОДЕКС ФРИЛАНСЕРА - Глава 3 - Кто он ? (who is ?)

webinformatic - Мои Музыкальные Миры - готовая музыка mp3 - новинки 2013 года

 

Что нужно знать для создания DirectX-приложений на C++ в среде
Microsoft Visual Studio 2008

 
     
  Урок 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
// another variable using the & (address of) operator

// указателю может быть присвоен адрес переменной
// содержащей значение посредством оператора &

p = & j;

// since j was on the stack, this address will be somewhere
// on the stack. Pointers are printed in hex format using
// %p and conventionally marked with 0x.

// поскольку j размещено в стеке, адрес будет представлять
// какой-то из адресов стека. Указатели распечатываются в шестнадцатиричном формате

с использованием
// %p в функции printf_s и по соглашению помечаются 0x.

printf_s("0x%p\n", p);

// The * (indirection operator) can be read as "the value
// pointed to by".
// Since p is pointing to j, this should print "2"

// Оператор * (оператор разыменования) может быть читаем как "указатель на значение"
// Поскольку p указывает на j, будет выведено "2"

printf_s("0x%p %d\n", p, *p);

// changing j will change the result of the indirection
// operator on p.

// изменение j изменит результат применения оператора разыменования
// к p.

j = 7;
printf_s("0x%p %d\n", p, *p );

// The value of j can also be changed through the pointer
// by making an assignment to the dereferenced pointer

// значение j может быть также изменено посредством указателя
// выполнением присвоения к разыменованному указателю

*p = 10;
printf_s("j is %d\n", j); // j теперь равно 10

// allocate memory on the heap for an integer,
// initialize to 5

// выделение памяти на куче (heap) для целого и,
// инициализация значением 5

p = new int(5);

// print the pointer and the object pointed to
// the address will be somewhere on the heap

// печать указателя и объекта на который указывает адрес
// где-то на куче (heap)

printf_s("0x%p %d\n", p, *p);

// free the memory pointed to by p

// освобождение памяти на которую указывает p
delete p;

// At this point, dereferencing p with *p would trigger
// a runtime access violation.

// с этого места разыменование p как *p будет давать
// ошибку нарушения прав доступа к памяти во время выполнения программы

// Pointer arithmetic may be done with an array declared
// on the stack or allocated on the heap with new.
// The increment operator takes into account the size
// of the objects pointed to.

// Вычисления с указателями могут выполняться для массива объявленного
// на стеке или выделенного на куче с помощью new.
// Оператор инкремента использует размер
// объектов на которые указывает указатель

p = new int[5];
for (i = 0; i < 5; i++, p++) {
*p = i * 10;
printf_s("0x%p %d\n", p, *p);
}

// A common expression seen is dereferencing in combination
// with increment or decrement operators, as shown here.
// The indirection operator * takes precedence over the
// increment operator ++.
// These are particularly useful in manipulating char arrays.

// Часто встречаемое выражение разыменования в комбинации
// с операторами инкремента или декремента выглядит так, как показано ниже.
// Оператор разыменования * выполняется перед оператором инкремента ++
// Это эффективно при манипуляциях с символьными массивами

char s1[4] = "cat";
char s2[4] = "dog";
char* p1 = s1;
char* p2 = s2;

// the following is a string copy operation

// операция копирования строки выглядит так -
while (*p1++ = *p2++);

// s2 was copied into s1, so now they are both equal to "dog"

// s2 копируется в s1, так что теперь обе строки содержат слово "dog"
printf_s("%s %s", s1, s2);
}

 
     
 

А вот пример демонстрирующий использование указателей в структурах данных, в данном случае

это связанный список. Пример также взят из MSVS Documentation

 
     
  // pointer_linkedlist.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;

struct NewNode {
NewNode() : node(0){}
int i;
NewNode * node;
};

void WalkList(NewNode * ptr) {
if (ptr != 0) {
int i = 1;
while (ptr->node != 0 ) {
cout << "node " << i++ << " = " << ptr->i << endl;
ptr = ptr->node;
}
cout << "node " << i++ << " = " << ptr->i << endl;
}
}

void AddNode(NewNode ** ptr) {
NewNode * walker = 0;
NewNode * MyNewNode = new NewNode;
cout << "enter a number: " << endl;
cin >> MyNewNode->i;

if (*ptr == 0)
*ptr = MyNewNode;
else {
walker = *ptr;
while (walker->node != 0)
walker = walker->node;

walker->node = MyNewNode;
}
}

int main() {
char ans = ' ';
NewNode * ptr = 0;
do {
cout << "a (add node) d (display list) q (quit)" << endl;
cin >> ans;
switch (ans) {
case 'a':
AddNode(&ptr);
break;
case 'd':
WalkList(ptr);
break;
}
} while (ans != 'q');
}

 
     
 

примеры ссылочных (reference) типов -

int &i;
int &i, &j;

 
     
 

читается как ссылка (адрес) на объект i. Синтаксически работа со ссылками полностью аналогична

работе с объектами -

// references.cpp
#include <stdio.h>
struct S {
//структура S содержащая поле i с типом short
short i;
};

int main() {
S s; // Declare the object.
объявляем объект
S& SRef = s; // Declare the reference.
объявляем ссылку
s.i = 3;

printf_s("%d\n", s.i);
printf_s("%d\n", SRef.i);

SRef.i = 4;
printf_s("%d\n", s.i);
printf_s("%d\n", SRef.i);
}

 
     
 

Определение массивов, работа с массивами

объявление массива и работа с массивом времени выполнения -

// arrays.cpp
// compile with: /EHsc
#include <iostream>

int main() {
using namespace std;
int size = 3, i = 0;
//определяем размер массива и индекс

int* myarr = new int[size]; //объявляем массив из size элементов с типом int и выделяем ему

память на куче (heap)

for (i = 0 ; i < size ; i++)
myarr[i] = 10;
//заносим значения в элементы массива

for (i = 0 ; i < size ; i++)
printf_s("myarr[%d] = %d\n", i, myarr[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) и

смена фона окна приложения в соответствии с выбранным цветом

 
     
     
     
     
     
     
     
     
     
  [назад] [далее] [к содержанию]  
 

Оставленные комментарии



Something: Unexplained 2 captive of desires / Нечто: Необъяснимое 2 в плену желаний
Костя Коробкин Комикс Коллекционное издание - 6 комиксов, 81 страница, 220 mp3 треков
Время загрузки: 0,2053