Операционные системы. Программирование в операционной среде Windows

46 4.4. Функция WinMainQ Функция WinMainO - это главная функция программы, которая вызывается при запуске приложения. Заголовок функции: int WINAPI WinMain (HINSTANCE hThisInst, HINSTANCE hPrevInst, LPSTR IpszArgs, int nWinMode) Первый формальный параметр hThisInst задает описатель (дескриптор) данного экземпляра приложения, который идентифицирует программу. Параметр hPrevInst использовался в Windows 3.1, а в более поздних версиях всегда равен NULL. Параметр IpszArgs - указатель на буфер с аргументами командной строки. Параметр nWinMode определяет вид отображения окна при запуске программы (нормальный, развернутый на весь экран или свернутый). Тип функции WINAPI задает стандартный для Wm32 способ передачи параметров. Функция WinMainO должна выполнять следующие действия: L Определить класс окна. 2. Зарегистрировать класс окна в Windows. 3. Создать окно, определяемое данным классом. 4. Отобразить это окно на экране. 5. Запустить цикл обработки очереди сообщений. Класс окна должен быть определен и зарегистрирован прежде, чем будет создано окно. Класс окна определяет стиль или тип окна, служит в качестве шаблона, задающего атрибуты окна. В Windows существует несколько предопределенных классов окна, например, WNDCLASS или WNDCLASSEX, но можно определить свои собственные классы. Для регистрации класса окна необходимо объявить структурную переменную определенного класса окна и заполнить элементы структуры, чтобы сообщить ОС Windows имя функции окна, а также какой вид должно иметь окно: стиль окна, вид курсора, иконки, фон окна и др. char szWinName[] = "MyWin"; // Имя "класса" окна WNDCLASSEX wcl; // "класс" окна // Определение элементов "класса" окна wcl .hinstance = hThisInst; // дескриптор данного экземпляра wcl.IpszClassName = (LPCWSTR)szWinName; // имя "класса" окна wcl . IpfnWndProc = WindowsFunc; // функция окна wcl. style = 0; // стиль no умолчанию wcl.cbSize = sizeof(WNDCLASSEX); // размер структуры wcl.hlcon = Loadlcon(NULL,IDI_APPLICATION); // большая иконка wcl.hlconSm = Loadlcon(NULL, IDI_WINLOGO); // малая иконка wcl.hCursor = LoadCursor(NULL, IDC_ARROW); // форма курсора wcl . IpszMenuName = NULL; // меню не используется wcl .cbClsExtra = 0; // дополнительной информации нет wcl . cbWndExtra = 0; // Регистрация "класса" окна RegisterClassEx(&wcl);

RkJQdWJsaXNoZXIy MTY0OTYy