Урок 9. Погружаемся В WinAPI:
До сегодняшнего урока мы делали инициализацию с помощью библиотеки GLUT. Но, пора забыть о glut. Почему? Причин на это есть несколько:
- Библиотеку glut всегда приходится с собой таскать (так как у людей ее нету). Да и вам приходится качать эту библиотеку из Сети. А зачем это делать, если можно обойтись и без нее?
- Если вы будете писать серьезный проект, то нужно использовать WinAPI, а не glut. Так как библиотека GLUT- это для несерьезных проектов (типа тех, что мы делали до этого урока). Кстати, если вы собираетесь работать в игровой индустрии (скажем, game develop'ером), тогда о glut и речи быть не может. Нужно знать только WinAPI.
- В любом случае вы должны знать WinAPI. А так убьем двух зайцев сразу. То есть, будем учить и OpenGL и WinAPI.
Может, есть еще куча разных мелких причин, но этих нам пока достаточно. Итак, что же такое WinAPI? Это, говоря простым и понятным языком, набор разных функций для создания программ под Windows. Зная WinAPI, вы можете писать почти одинаковые программы на разных языках, то есть эти функции не изменяются в зависимости от конкретного языка.
Давайте, что б очень много не говорить, напишем самое простое приложение (окно с сообщением). Для этого откроем Visual C++, и выберем File -> New. Теперь в окне выберите Win32 Application, назовите ваш проект, и нажмите Ok. Мы создали проект. К нашему проекту нужно добавить *.cpp файл (File->New->C++ Source File).
Вот теперь уже у нас есть место, где и напишем свою программу. Ниже представлен код программы:
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nShowCmd)
{
MessageBox(0,"It is worked!","WinAPI Test",MB_OK | MB_ICONINFORMATION);
return 0;
}
Итак, ничего сложного здесь нет. Сейчас вы и сами это поймете :). Разберем каждую строчку:
#include Подключаем файл для работы с WinAPI функциями.
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) Эта функция должна присутствовать во всех приложениях, которые мы будет писать дальше (это что-то вроде функции int main(); которую мы использовали до этого). Мне кажется, что не плохо было бы разобраться со всеми параметрами данной функции.
HINSTANCE hInstance- указатель на экземпляр нашего приложения (или, текущий дескриптор окна).
HISTANCE hPrevInstance- Всегда равен 0. Раньше (в Windows 3.1) этот параметр указывал на предыдущий экземпляр.
LPSTR lpCmdLine- Указатель на командную строку.
Int nShowCmd- параметр, который отвечает за то, как будет выглядеть наше окно (как оно запуститься- в нормальном, или развернутом виде).
Функция MessageBox()- это стандартная функция, которая показывает окошко с сообщением. Первый параметр- дескриптор окна (равен нулю), второй- это, собственно, ноше сообщение, третий параметр- заголовок окошка, и в последнем параметре мы указываем на то, какие должны быть кнопки, и какой значок. Ну и в конце программы мы должны вернуть операционной системе значение 0 (которое указывает на то, что все произошло без ошибок).
Вот и подошел к концу наш первый урок по WinAPI. Здесь мы разобрали очень (подчеркиваю, очень) простой пример. На деле все будет намного сложнее (а кто сказал, что программирование- это легко? :) ). До встречи в следующем уроке!
Alex Salo
Навигация
Назад | Список уроков | Вперед
|