Понедельник
29.04.2024, 12:23
Приветствую Вас Гость | RSS
Главная Каталог статей Регистрация Вход
Меню сайта

Категории раздела
Уроки програмирования игр на IrrLicht [7]
Уроки програмирования на игровом движке IrrLicht
Обработка цифровых изображений [0]
Различные способы реализации графических фильтровов,работа с цветовыми пространствами
Програмирование игр с использованием DirectX [3]
Програмирование трёхмерной графики на DirectX под Windows

Наш опрос
На каком языке вы програмируете?
Всего ответов: 209

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа

Главная » Статьи » Програмирование » Програмирование игр с использованием DirectX

Урок 1.Инициализация оконного приложения.
Привет!В этом уроке я расскажу как создать оконное приложение(основа для DX).Для начала давайте откроем MS Visual Studio(у меня версия 2005) и  создадим новый проект(File->New->Project).Появится вот такое окно,как на рисунке 1.В окне Project types выберите Visual C++,а в разделе Templates выберите Win32 Project
Рисунок_1
Щёлкните на кнопке OK.В появившемся окне нажмите кнопку Next(далее).Откроется окно Application Sittings(Настройки приложения).В нем найдите надпись Application type(тип приложения) и под ней выберите Windows Application(оконное приложение),потом найдите Additional options(дополнительные настройки)  и выберите Empty Project(пустой проект).Нажмите кнопку Finish(Готово).Создастся пустой проект.В окне Solution Explorer щелкните правой кнопкой на папке Source Files и выберите Add->New Item.В открывшемся окне,в меню Categories,выберите пункт Code,а в Templates - С++ File(.cpp) и назовите его,например Main.Нажмите ОК.
Перейдём к коду.

#include <windows.h> //Добавляем заголовочный файл для Windows
#define WND_NAME "Инициализация оконного приложения"  //Имя окна
#define CLASS_NAME "Main_Class" //Имя класса
HWND hWnd; //Окно
LRESULT CALLBACK WindowProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) //В этой функции будут обрабатываться сообщения
{
    switch (message)
    {
    case WM_DESTROY: //Сообщение о закрытии приложения
        PostQuitMessage (0);
        break;

    case WM_SETCURSOR://Сообщение об установке курсора
        SetCursor (NULL);//Скрываем курсор
        break;
    }
    return DefWindowProc(hWnd, message, wParam, lParam);
}
bool WindowInit (HINSTANCE hInst, int nCmdShow)
{
    WNDCLASS            wc;    //Главный класс
    wc.hInstance        = hInst;    //Дескриптор нашего приложения
    wc.lpszClassName    = (LPCWSTR)CLASS_NAME; //Имя класса
    wc.lpfnWndProc        = WindowProc; //Функция обработки сообщения
    wc.style            = 0; //Устанавливаем обычный стиль окна

    wc.hIcon            = LoadIcon (hInst, IDC_ICON); //Иконка приложения
    wc.hCursor            = LoadCursor (hInst, IDC_ARROW);//Курсор приложения
    wc.lpszMenuName    = NULL;//Нет меню

    wc.cbClsExtra        = 0; // Нет дополнительной информации для окна
    wc.cbWndExtra        = 0; // Нет дополнительной информации для окна
    wc.hbrBackground    = (HBRUSH) GetStockObject (BLACK_BRUSH); //Фон

    RegisterClass (&wc);//Регистрируем класс

    hWnd = CreateWindowEx(        //Создаём окно
        WS_EX_TOPMOST, //Стиль окна
        (LPCWSTR)CLASS_NAME, //Имя класса
        (LPCWSTR)WND_NAME, //Заголовок окна
        WS_OVERLAPPEDWINDOW, //Обычный стиль окна
        0, 0, // X,Y левого угла окна
        640, //Ширина окна
        480, //Высота окна
        NULL, //Родительское окно( У нас его нет)
        NULL, //Дескриптор меню( У нас его нет)
        hInst, //Дескриптор приложения
        NULL); //Дополнительные параметры

    if(!hWnd)
    {
        return false;//Если окно не создалось
    }
    return true;
}
bool AppInit (HINSTANCE hThisInst, int nCmdShow)//Инициализация приложения
{
    if(!WindowInit (hThisInst, nCmdShow)) //Если не удалось инициализировать,то выходим
    {
        return false;
    }
    ShowWindow (hWnd, nCmdShow);//Рисуем окно
    UpdateWindow (hWnd);//Обновляем его
    return true;
}
int APIENTRY WinMain (HINSTANCE hThisInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow)//Самая главная функция нашего приложения
{
    MSG msg; //Собщение
    if(!AppInit (hThisInst, nCmdShow)) return false;//Инциализируем приложение
   
    while (1)//Бесконечный цикл в котором перебираем сообщения
    {
        if(PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE))
        {
            if(!GetMessage (&msg, NULL, 0, 0)) break;
            TranslateMessage (&msg); //Переводим сообщение
            DispatchMessage (&msg); //Отсылаем сообщение
        }
    }

    return 0;
}

Готово!Компилируйте и радуйтесь!
Исходник можно скачать по этой ссылке!
Категория: Програмирование игр с использованием DirectX | Добавил: mannn (26.07.2010)
Просмотров: 2027 | Комментарии: 3 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск

Друзья сайта
  • Самый свежий NET.Framework
  • Програмирование игр на OpenGL
  • FAQ по системе
  • Инструкции для uCoz


  • Copyright by ZHABIN GRAD © 2024