На этом шаге мы рассмотрим простейший пример приложения.
Любое приложение, созданное с помощью ObjectWindows, начинает свое существование как объект класса TApplication.
TApplication регистрирует, создает и отображает основное окно приложения; поддерживает работу цикла обработки сообщений (таким образом, что прикладная программа может взаимодействовать как с пользователем, так и с Windows), и закрывает его, когда работа закончена. Класс TApplication обеспечивает вывод окна на экран.
Приведем текст программы, выводящей окно на экран.
#include <owl\applicat.h> int OwlMain (int, char *[] ) { TApplication App("Пример окна"); return App.Run(); }
Результат работы приложения изображен на рисунке 1:
Рис.1. Результат работы приложения
Рис.2. Окно TargetExpert
Это полноценное окно с системным меню и всеми элементами управления, необходимыми для перемещения окна, изменения его размера, минимизации и максимизации.
Опишем работу приложения. Первая строка включает в OWL-приложение заголовочный файл для объекта приложения OWL. Для большинства OWL-объектов заголовочный файл содержится в каталоге INCLUDE\OWL. Чтобы получить доступ к OWL-объекту, нужно включить его заголовочный файл в программу. В примере мы используем только один OWL-объект - объект приложения, поэтому в начале примера подключается только один заголовочный файл.
Следующая строка является первой строкой функции OwlMain(), с которой начинается работа любой OWL-программы. Помимо того, что отпадает нужда в сложной функции WinMain(), OwlMain() обеспечивает доступ к аргументам командной строки argc и argv (которые не используются в примере).
Внутри функции OwlMain() мы создаем на основе базового OWL-класса TApplication объект программы. Класс TApplication имеет два конструктора. Первый (который как раз и используется в программе) имеет единственный аргумент - имя приложения, которое появляется в строке заголовка основного окна. Прототип этого конструктора выглядит следующим образом:
TApplication <имя объекта> ("<заголовок окна>");
Поскольку этот единственный аргумент конструктора по умолчанию принимает значение нулевой строки, вы можете создавать ваше приложение, вообще не используя никаких аргументов. При этом, однако, ваше основное окно останется без заголовка.
Другой конструктор TApplication, который следует использовать лишь при необходимости написать собственную версию WinMain(), поддерживает доступ к аргументам, используемым функцией WinMain(). Этот конструктор приведен ниже:
TApplication (const char far *name, HINSTANCE instance, HINSTANCE prevInstance, const char far *cmdLine, int cmdShow);
Функция WinMain() из примера вначале создает объект-приложние под названием Арр. В следующей строке вызывается функция-член (метод) Run() объекта Арр, которая переводит приложение в активное состояние, инициализирует его и запускает цикл обработки сообщений. Run() заканчивает работу только тогда, когда пользователь закрывает приложение.
На следующем шаге мы остановимся более подробно на основном окне приложения.