OpenGL за Windows
Представям на вашето внимание някои от ранните ...
Създаване на приложение за Win32
Преди да създадете реалистични триизмерни светове и различни цветни специални ефекти, нека се научим как да създадем обикновен прозорец на Windows. Впоследствие ще го използваме като платно за нашите приложения.
1) Създайте първоначален проект
Много е лесно да направите това с Visual Studio:
1. Изберете New от менюто File.
2. Сред целия списък с възможни проекти се нуждаем от приложение Win32. В полето Име на проекта въведете Skel (Скелет. Това ще наречем приложението, въз основа на което ще изградим всички останали. Това е гръбнакът.) Фигура 01 показва диалоговия прозорец за настройки.

Фиг.01 Създаване на приложение Win32
Не забравяйте да включите местоположението на проекта в полето Местоположение. Най-добре е да отделите отделна директория за това.

3. След като щракнете върху OK (приложи), ще се появи диалогов прозорец с избора на типа на нашия проект. Фиг. 02. Изберете приложението Simple Win32.

Фиг. 02 Избор на първоначално приложение
Едно просто приложение ще създаде за нас основен файл, в който ще пишем програми.
Сега щракнете върху Finish и работата с мениджъра на проекта може да се счита за завършена.
2) създаване на главния прозорец
Ако започнете сега да компилирате нашето приложение (с помощта на командата Build - клавиш F7) и след това да го стартирате (с помощта на командата Execute Program - Ctrl_F5), тогава нищо няма да се случи. Това е така, защото нашето приложение в момента е празно, но ние ще го поправим бързо.
Панелът вляво съдържа информация за нашия проект, за използваните файлове в него. Отидете в раздела FileList и ще видите дървото на файловата йерархия на нашия проект. Намерете файла Skel.cpp там и го отворете. Фиг.03. Този файл съдържа функцията WinMain, която се извиква при стартиране на нашето приложение. Както можете да видите, той е празен (return 0 - изход от функцията с return 0), поради което нищо не премина през стартирането на нашето приложение. Сега всичко, което пишем там и ще бъде изпълнено, така че продължете. Нашата задача е да изградим обикновен прозорец "Windows".
Фиг.03 Списък на проектните файлове и отворете основния файл - Skel.cpp

За да създадем прозорец, трябва:
1. Добавете две литерални променливи - името на класа на нашето приложение и заглавието на прозореца
Char * szClassName = "Приложение OpenGL";
Char * szWndName = "OpenGL";
2. Сега трябва да добавим друга променлива, която характеризира класа на нашия прозорец.
WNDCLASS wc;
wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = NULL;
wc.hCursor = LoadCursor (NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = szAppName;
Сред различните свойства, които ще зададем тази променлива, трябва да посочим функцията, която Windows ще използва, за да ни изпраща съобщения.
Wc.lpfnWndProc = (WNDPROC) MsgProc;
Тези. технологията на нашето приложение ще бъде следната: ние създаваме прозорец и задаваме функцията за обработка на съобщения на прозореца, а след това обработваме различни получени съобщения (съобщения за прерисуване, за натискане на клавиш и т.н.)
Когато попълним всички параметри на нашия прозорец, от които се нуждаем, тогава класът на нашия прозорец трябва да бъде регистриран с помощта на функцията
RegisterClass (& wc);
3. Това е всичко, класът с това име е регистриран, сега можете да създадете нашия дългоочакван прозорец с помощта на функцията
CreateWindow (,
,,
,
,
, );
Тази функция ще ни върне кода на прозореца. Ще ни бъде полезно, така че нека го запишем в отделна променлива от типа HWND
HWND hWnd;
...
hWnd = CreateWindow (szAppName, szAppName,
WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
CW_USEDEFAULT, CW_USEDEFAULT,
640, 480,
NULL, NULL,
hИнстанция,
НУЛА);
4. Прозорецът е създаден, остава да се фокусира върху него
SetFocus (hWnd);
И тогава го покажете
Витрина (hWnd, True)
Това е мястото, където променливата на кода на нашия прозорец беше полезна.
5. Сега сме готови да получаваме и обработваме съобщения на Windows:
BOOL bGotMsg;
MSG съобщение;
ако (bGotMsg)
TranslateMessage (& msg);
DispatchMessage (& msg);
>
друго
InvalidateRect (hWnd, NULL, FALSE);
>
>
? последно - ще добавим нова функция към нашата програма
INT MsgProc (HWND hWnd, UINT uMsg, WPARAM wParam,
LPARAM lParam);
Променливата Msg ще посочи вида на съобщението, поради което се извиква тази функция. Като цяло има много голям списък с възможни съобщения, но в нашата работа се нуждаем само от най-малките.
WM_CREATE - създаване
WM_DESTROY - унищожаване
WM_PAINT - пребоядисване
WM_RESIZE - преоразмеряване