Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прогр_ЛР6.doc
Скачиваний:
6
Добавлен:
19.11.2019
Размер:
301.57 Кб
Скачать

Невидимый код

Теперь мы знаем два способа создания объектов из класса: «ручной» во время разработки приложения и «в коде» во время работы программы.

Разберем первый способ подробнее. Для этого рассмотрим пример.

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

Можно сделать вывод, что код присутствует, однако мы его не видим. Когда Вы при помощи панели Toоlbox размещаете на форме кнопку, VС++ автоматически для Вас добавляет в проект необходимый код. Более того, в проекте должен быть код, который создает на экране нашу форму Form1 и управляет ее работой. Попробуем найти этот код.

В окне Solution Explorer выберите файл Form1.h. и щелкните по кнопке View Code. В окно кода загрузится текст кода формы. Он будет примерно таким:

#pragma once

namespace My2 {

using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;

public ref class Form1 : public System::Windows::Forms::Form

{

public:

Form1(void)

{

InitializeComponent();

}

protected:

~Form1()

{

if (components)

{

delete components;

}

}

private: System::Windows::Forms::Button^ button1;

protected:

private:

System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code

void InitializeComponent(void)

{

this->button1 = (gcnew System::Windows::Forms::Button());

this->SuspendLayout();

//

// button1

//

this->button1->Location = System::Drawing::Point(0, 0);

this->button1->Name = L"button1";

this->button1->Size = System::Drawing::Size(75, 23);

this->button1->TabIndex = 0;

this->button1->Text = L"button1";

this->button1->UseVisualStyleBackColor = true;

//

// Form1

//

this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);

this->AutoScaleMode = System::Windows::Forms:: AutoScaleMode::Font;

this->ClientSize = System::Drawing::Size(292, 266);

this->Controls->Add(this->button1);

this->Name = L"Form1";

this->Text = L"Form1";

this->ResumeLayout(false);

}

#pragma endregion

};

}

Вполне возможно, что большая часть этого кода будет Вам непонятна. Однако обратите внимание на функцию void InitializeComponent(void), а именно, на строки, выделенные жирным шрифтом в ней. Например, на строки:

this->button1 = (gcnew System::Windows::Forms::Button());

this->button1->Location = System::Drawing::Point(0, 0);

this->button1->Size = System::Drawing::Size(75, 23);

this->button1->Text = L"button1";

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

А где же код, управляющий их поведением? Например, тем, что края формы можно таскать мышкой, что кнопка при нажатии слегка меняет вид, что при нажатии на кнопку с крестикой в правом верхнем углу (кнопка закрытия окна) программа должна завершиться? Этот код нам не получится увидеть, так как он «запрятан» в классах Form и Button. Этот код входит в сборку библиотеки классов .NET Framework. Файлы сборки обычно имеют расширение .dll или .exe.

Таким образом, можно сделать вывод, что класс состоит из кода, управляющего поведением объектов этого класса. Для пользователей класса, то есть для нас с Вами, класс доступен в виде объектов-экземпляров класса, которые имеют определенные свойства и методы.

Мы в принципе показали, что при создании проекта можно написать правильный код в окне кода и запустив проект, увидеть правильно работающую форму со всеми нужными элементами управления. (Именно таким образом обычно пишутся программы на языке С++). Однако такой код писать довольно долго и, главное, трудно, особенно начинающим программистам. Для облегчения этой работы и придумано визуальное программирование – мы манипулируем с окном свойств, окном Tollbox и другими окнами, а VС++ сам пишет за нас весь необходимый код.

В режиме проектирования VС++ создает для нас иллюзию существования на экране формы и элементов управления на ней. Но необходимо помнить, что это только видимость – никакой формы и элементов управления в режиме проектирования, конечно, не существует, это лишь их удобные видимые образы. И любая манипуляцию с элементами управления в режиме проектирования нисколько не меняет сами элементы управления (которых и нет), а меняет лишь невидимый код и видимый образ. Поэтому настоящая форма и настоящие элементы управления начинают жить реальной жизнью только лишь после запуска программы, во время ее работы.