Исследование способов создания приложения Windows с использованием ObjectWindows 2.x, страница 2

║==│           Main Window   /         │\/│/\║

╟──┴────────────────────────/──────────┴──┴──╢

║ File  Edit  Help                           ║

╟─────────────────────────────────────────┬──╢

║                                         │| ║

║                                         ├──╢

║                                         │  ║

║                                         ├──╢

║                                         │  ║

║                                         │  ║

║                                         │  ║

║              Client area                │  ║

║                                         │  ║

║                                         │  ║

║                                         │  ║

/║                                         │  ║\

| ║                                         │  ║ |

| ║                                         ├──╢ |

| ║                                         │| ║ |

| ╟──┬──┬────────────────────────────────┬──┼──╢ |

| ║<-│  │                                │->│  ║ |

| ╚══╧══╧═════════════════════/══════════╧══╧══╝ |

|                /           /                  /

\ Sizing border            /         Vertical scroll bar

Horizontal scroll bar

Рис. 2   Компоненты окна приложения


Любая программа MS-DOS, написанная на языке C/C++, должна содержать функцию с именем  main, которая первой получает управление. Приложение Windows должно содержать функцию с именем WinMain, определенную следующим образом:

int PASCAL WinMain (

HINSTANCE hInst,

HINSTANCE hPrevInst,

LPSTR     lpszCmdLine,

int       nCmdShow     )

{  // Тело функции  }

Библиотека классов ObjectWindows 2.0 использует функцию по умолчанию WinMain, которая проводит проверку ошибок и обработку исключений. WinMain начинает работу приложения и вызывает функцию OwlMain:

int OwlMain ( int   argc, char* argv[] )

{  // Тело функции  }

Функция OwlMain получает те же два аргумента, что и функция main стандартной программы для MS-DOS. OwlMain возвращает значение типа int. Параметр argc показывает число аргументов в командной строке, переданной приложению. Параметр argv, массив указателей на char, адресует эти аргумен ты, которые представлены в виде строк, ограниченных нулем ( argv[0] адресует имя программы ).

Пример  программы,  использующей  вызов функции Windows API.

/* ------------------------------------------------------- *

*         QwlMain :  Window1.CPP  

* ------------------------------------------------------- */

#include <windows.h>

int

OwlMain ( int /* argc */, char* /* argv */ [] )

{

MessageBox ( 0,

"Hello world!",

"First program",

MB_OK

);

return 0;

}

Помещение аргументов в скобки комментария /* */ позволяет избежать предупреждения компилятора о неиспользованных аргументах.

Библиотека классов ObjectWindows

Библиотека классов типа OWL  предоставляет пользователю каркас прикладных программ, на основе которого создаются конкретные приложения. Опираясь на  механизм  наследования, пользователь создает новые классы, расширяя функциональные возможности имеющихся базовых классов.

OWL 2.x написана в соответствии со стандартом ANSI для языка C++. OWL не является единственной библиотекой классов для  Windows. OWL производит непосредственный вызов функций API Windows, а применение встроенного кода не приводит к ощутимым затратам времени при использовании библиотеки классов.

Многочисленные классы OWL охватывают следующие основные области:

    - Классы модулей и приложений: TModule, TApplication

    - Окна:                        TWindow 

    - Управляющие классы:          TControl