Программирование для IBM OS2


Функция main


Функция main , получающая управление при запуске приложения, создает главное окно и организует цикл обработки сообщений.

В переменной hmq хранится идентификатор очереди сообщений, созданной функцией WinCreateMsgQueue . При выборке сообщение записвается для временного хранения в структуру qmsg.

Переменная flFrameFlags хранит набор флагов, которые используются при создании окна Frame Window :

ULONG flFrameFlags = FCF_SYSMENU | FCF_TITLEBAR | FCF_MINMAX | FCF_SIZEBORDER | FCF_SHELLPOSITION | FCF_TASKLIST | FCF_ICON;

Мы создаем окно, которое имеет меню, заголовок, кнопки минимизации и максимизации, рамку для изменения размеров окна и пиктограмму. Начальные размеры и расположение окна выбираются оболочкой Workplace Shell.

В строке szWndClass записано имя класса, которое используется для окна Client Window .

Первое, что делает функция main после запуска приложения - это инициализация при помощи функции WinInitialize . Данная функция должна вернуть идентификатор блока Anchor-block при нормальном завершении и значение NULLHANDLE в случае возникновения ошибки.

Как обработать ошибку?

Можно, конечно, просто завершить работу приложения, однако в этом случае мы так и не узнаем, что же произошло. Гораздо лучше было бы вывести на экран сообщение об ошибке, однако в приложении Presentation Manager мы не можем воспользоваться для этого такими функциями, как puts или printf .

Нас выручит тот факт, что в программном интерфейсе Presentation Manager имеется простейшее средство отображения сообщений в диалоговых панелях - функция WinMessageBox . Вот как мы использовали эту функцию для вывода сообщения при возникновении ошибки инициализации:

if(hab == NULLHANDLE) { WinMessageBox (HWND_DESKTOP, HWND_DESKTOP, "Ошибка инициализации", "Ошибка", 0, MB_ICONHAND | MB_OK); return(-1); }

Прототип функции WinMessageBox приведен ниже:

ULONG WinMessageBox ( HWND hwndParent, // идентификатор родительского окна HWND hwndOwner, // идентификатор окна владельца PSZ pszText, // текст сообщения PSZ pszCaption, // заголовок диалоговой панели ULONG idWindow, // идентификатор окна // диалоговой панели ULONG flStyle); // стиль диалоговой // панели с сообщением




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



Книжный магазин