Программирование стратегических игр с DirectX 9.0
bda5893f

Погружаемся и сталкиваемся с кодом


Теперь, когда у вас есть чистый исходный файл, призывающий вас, настало время написать действительный код для Windows. Не волнуйтесь слишком много, я проведу вас через каждый шаг. Взгляните на приведенный ниже листинг. В нем полностью приведена рабочая программа для Windows.

// Стандартный включаемый файл Windows #include <windows.h>

// Прототип функции обратного вызова для обработки сообщений LRESULT CALLBACK fnMessageProcessor (HWND, UINT, WPARAM, LPARAM);

// Функция вызывается автоматически, когда программа запускается int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { HWND hWnd; MSG msg; WNDCLASSEX wndclass;

// Настройка класса окна wndclass.cbSize = sizeof(WNDCLASSEX); wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = fnMessageProcessor; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInstance; wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = "Window Class"; // Имя класса wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

// Регистрация класса окна if(RegisterClassEx(&wndclass) == 0) { // Сбой программы, выход exit(1); }

// Создание окна hWnd = CreateWindowEx( WS_EX_OVERLAPPEDWINDOW, "Window Class", // Имя класса "Create Window Example", // Текст заголовка WS_OVERLAPPEDWINDOW, 0, 0, 320, 200, NULL, NULL, hInstance, NULL);

// Отображение окна ShowWindow(hWnd, iCmdShow);

// Обработка сообщений, пока программа не будет прервана while(GetMessage (&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); }

return (msg.wParam); }

// Функция обратного вызова для обработки сообщений // (НЕОБХОДИМА ВСЕМ ПРОГРАММАМ ДЛЯ WINDOWS) LRESULT CALLBACK fnMessageProcessor (HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam) { switch(iMsg) { // Вызывается, когда впервые создается окно case WM_CREATE: return(0); // Вызывается, когда окно обновляется case WM_PAINT: return(0); // Вызывается, когда пользователь закрывает окно case WM_DESTROY: PostQuitMessage(0); return(0); default: return DefWindowProc(hWnd, iMsg, wParam, lParam); } }



Содержание раздела