Типовая структура простейшего Windows-приложения, основанная на применении окон

 

Это приложение создает и отображает окно, которое не содержит других элементов управления. Тем не менее, оно позволяет показать действия, необходимые для построения полнофункционального Windows-приложения. Другими словами, окно представляет собой стартовую площадку, на которой можно построить большинство Windows-приложений.

// listing 1 (WinSkel)

// Простейшее Windows-приложение, основанное на применении окон.

Using System;

Using System.Windows.Forms;

// Класс WinSkel, производный от класса Form.

class WinSkel : Form

{

Public WinSkel()

{

// Присваиваем окну имя.

Text = "Скелет (шаблон) Windows-окна";

}

// Метод Main используется только для запуска приложения.

[STAThread]

Public static void Main()

{

WinSkel skel = new WinSkel(); // Создаем форму.

// Запускаем механизм функционирования окна.

Application.Run(skel);

}

}

 

Рассмотрим Listing 1построчно.

Прежде всего, обратите внимание на то, что она включает два пространства имен: System и System.Windows.Forms.

Пространство имен System необходимо для использования атрибута STAThread, который предшествует методу Main(), a System.Windows.Forms предназначено для поддержки подсистемы Windows.Forms.

Затем создается класс WinSkel, который наследует класс Form. Следовательно, класс WinSkel определяет тип формы. В данном случае это самая простая (минимальная) форма (в отличие от той, которую автоматически генерируем мастер WindowsForms).

В теле конструктора класса WinSkel содержится только одна строка кода:

 

Text = "Скелет (шаблон) Windows-окна";

 

Здесь устанавливается свойство Text, которое содержит название окна. Таким образом, после выполнения инструкции присвоения строка заголовка окна будет содержать текст Скелет (шаблон) Windows-окна.

Свойство Text определяется так:

 

public virtual string Text { get; set; }

Свойство Text унаследовано от класса Control.

Теперь рассмотрим метод Main (), который объявлен подобно другим методам Main (), входящим в состав программ.

Заголовку метода Main() предшествует свойство STAThread.

Microsoft заявляет, что это свойство должен иметь метод Main () в каждой Windows-программе. Свойство STAThread устанавливает модель организации поточной обработки (threading model), а именно модель с однопоточным управлением, т.е. такую обработку данных, когда все объекты выполняются в едином процессе (single-threaded apartment — STA).

Рассмотрение моделей организации поточной обработки выходит за рамки данного курса, но заметим, что Windows-приложение может использовать одну из двух моделей: с однопоточным или многопоточным управлением.

В методе Main () создается объект класса WinSkel с именем skel. Этот объект затем передается методу Run (), определенному в классе Application:

 

Application.Run(skel);

 

Эта инструкция запускает механизм функционирования окна. Класс Application определяется в пространстве имен System.Windows.Forms и инкапсулирует возможности, присущие всем Windows-приложениям.

Вот как определяется используемый здесь метод Run():

 

public static void Run(Form ob)

 

В качестве параметра он принимает ссылку на форму. Поскольку класс WinSkel выведен из класса Form, объект типа WinSkel можно передать методу Run ().

Эта программа при выполнении создает окно, показанное ниже:

Оно имеет стандартный размер (300 пикселей по ширине и 300 пикселей по высоте).

Это окно полностью функционально. Можно изменить его размеры, переместить, свернуть, восстановить и закрыть. Таким образом, основные свойства, присущие практически всем окнам, были достигнуты написанием всего нескольких строк программного кода.

Для сравнения: такая же программа, написанная на языке С и напрямую вызывающая интерфейс Windows API, потребовала бы приблизительно в пять раз больше программных строк!

Предыдущий пример продемонстрировал основные принципы создания Windows приложений, основанных на применении окон.

Итак, чтобы создать форму,

создайте класс, производный от класса Form.

Затем инициализируйте эту форму в соответствии с требованиями приложения,

создайте объект производного класса и

вызовите метод Application.Run () для этого объекта.

Windows-программу можно скомпилировать, используя, либо компилятор командной строки, либо среду разработки Visual Studio.