Статистика |
Онлайн всего: 1 Гостей: 1 Пользователей: 0 |
|
Урок 1.Инициализация оконного приложения.
Привет!В этом уроке я расскажу как создать оконное приложение(основа для DX).Для начала давайте откроем MS Visual Studio(у меня версия 2005) и создадим новый проект(File->New->Project).Появится вот такое окно,как на рисунке 1.В окне Project types выберите Visual C++,а в разделе Templates выберите Win32 Project
Щёлкните на кнопке 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 |
|
|
|