Программирование на C++ глазами хакера


Код программы - часть 8


WNDCLASSEX — это структура, которая используется при создании нового класса окна. Для минимального приложения нам понадобится заполнить следующие поля (основные):

  • style — стиль окна;
  • Lpfnwndproc — указатель на процедуру, которая будет вызываться на все пользовательские или системные события;
  • Hinstance — манипулятор, который мы получили при запуске программы в процедуре _tWinMain;
  • HbrBackground — цвет фона (в принципе, он необязателен, но по умолчанию используется цвет окна);
  • LpszClassName — имя создаваемого класса;
  • Hcursor — курсор. Сюда загружается стандартный курсор-стрелка.

Все, структура готова, и мы можем зарегистрировать новый класс будущего окна. Для этого вызывается функция WinAPI RegisterClassEx(&wcex). После этого в системе есть описание вашего будущего окна. Почему будущего? Да потому, что само окно мы еще не создали. Для этого нужно еще вызвать функцию CreateWindow (это происходит в функции InitInstance, которая в свою очередь вызывается в _tWinMain после вызова MyRegisterClass):

hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

У нее достаточно много параметров, и давайте посмотрим на них внимательнее.

  • Имя класса. Мы зарегистрировали класс и сохранили имя в переменной szWindowClass, значит и здесь мы должны указать именно этот класс.
  • Имя окна. Это всего лишь заголовок, который будет выводиться в окне. Его мы уже загрузили с помощью функции LoadString и сохранили в переменной szTitle.
  • Стиль окна. Нас интересует простейшее WS_OVERLAPPEDWINDOW окно.
  • Следующие четыре параметра — это левая и правая позиции, ширина и высота окна. Если указать все параметры равными нулю или CW_USEDEFAULT, то значения будут выбраны по умолчанию.
  • Главное окно по отношению к создаваемому. Наше окно само по себе главное, поэтому указываем NULL, что соответствует нулю.

Остальные параметры нас пока не интересуют. После создания окна его надо отобразить. Делается это с помощью вызова процедуры ShowWindow , о которой мы уже немного говорили. У этой процедуры использованы два параметра:




Начало  Назад  Вперед