Шаг 2.
Библиотека OWL.
Создание объекта приложения

    На этом шаге мы рассмотрим простейший пример приложения.

    Любое приложение, созданное с помощью ObjectWindows, начинает свое существование как объект класса TApplication.

    TApplication регистрирует, создает и отображает основное окно приложения; поддерживает работу цикла обработки сообщений (таким образом, что прикладная программа может взаимодействовать как с пользователем, так и с Windows), и закрывает его, когда работа закончена. Класс TApplication обеспечивает вывод окна на экран.

    Приведем текст программы, выводящей окно на экран.

#include <owl\applicat.h>
int OwlMain (int, char *[] )
{
    TApplication  App("Пример окна");
    return  App.Run();
}
Текст этой программы можно взять здесь.


    Замечание. В некоторых случаях при выполнении этого приложения может возникнуть ошибка, свидетельствующая о невозможности найти DLL-библиотеки cw3215.dll, bids45f.dll, owl250f.dll. В этом случае можно прописать путь к ним в системной переменной или скопировать их в ту директорию, где находится исполняемый файл.

    Результат работы приложения изображен на рисунке 1:


Рис.1. Результат работы приложения


    Замечание. Перед запуском программы необходимо вызвать контекстно-зависимое меню окна программы (нажатием правой клавиши мыши) и выбрать пункт TargetExpert. В появившемся окне (рис.2) TargetType установить в Application [.exe], Platform - Win32, включить флаг BWCC.


Рис.2. Окно TargetExpert


    Это полноценное окно с системным меню и всеми элементами управления, необходимыми для перемещения окна, изменения его размера, минимизации и максимизации.

    Опишем работу приложения. Первая строка включает в OWL-приложение заголовочный файл для объекта приложения OWL. Для большинства OWL-объектов заголовочный файл содержится в каталоге INCLUDE\OWL. Чтобы получить доступ к OWL-объекту, нужно включить его заголовочный файл в программу. В примере мы используем только один OWL-объект - объект приложения, поэтому в начале примера подключается только один заголовочный файл.

    Следующая строка является первой строкой функции OwlMain(), с которой начинается работа любой OWL-программы. Помимо того, что отпадает нужда в сложной функции WinMain(), OwlMain() обеспечивает доступ к аргументам командной строки argc и argv (которые не используются в примере).

    Внутри функции OwlMain() мы создаем на основе базового OWL-класса TApplication объект программы. Класс TApplication имеет два конструктора. Первый (который как раз и используется в программе) имеет единственный аргумент - имя приложения, которое появляется в строке заголовка основного окна. Прототип этого конструктора выглядит следующим образом:

    TApplication <имя объекта> ("<заголовок окна>");

    Поскольку этот единственный аргумент конструктора по умолчанию принимает значение нулевой строки, вы можете создавать ваше приложение, вообще не используя никаких аргументов. При этом, однако, ваше основное окно останется без заголовка.


    Замечание. В Windows-приложениях выполнение программы начинается с вызова функции WinMain(). В ObjectWindows выполнение программы начинается с обращения к функции OwlMain(). Это связано с тем, что в OWL предусмотрена своя версия функции WinMain(), которая обеспечивает собственную проверку и обработку ошибок. Эта принятая по умолчанию версия автоматически вызывает функцию OwlMain().

    Другой конструктор TApplication, который следует использовать лишь при необходимости написать собственную версию WinMain(), поддерживает доступ к аргументам, используемым функцией WinMain(). Этот конструктор приведен ниже:

  TApplication (const char far *name, HINSTANCE instance, HINSTANCE prevInstance, 
                const char far *cmdLine, int  cmdShow);

    Функция WinMain() из примера вначале создает объект-приложние под названием Арр. В следующей строке вызывается функция-член (метод) Run() объекта Арр, которая переводит приложение в активное состояние, инициализирует его и запускает цикл обработки сообщений. Run() заканчивает работу только тогда, когда пользователь закрывает приложение.

    На следующем шаге мы остановимся более подробно на основном окне приложения.




Предыдущий шаг Содержание Следующий шаг