Главная страница
Навигация по странице:

  • Events

  • Form Members

  • Листинг 10.3

  • Борис Пахомов Санкт Петербург бхв петербург 2013 удк 004. 4 Ббк 32. 973. 26018. 2 П


    Скачать 17.38 Mb.
    НазваниеБорис Пахомов Санкт Петербург бхв петербург 2013 удк 004. 4 Ббк 32. 973. 26018. 2 П
    АнкорMS Visual C.pdf
    Дата04.08.2018
    Размер17.38 Mb.
    Формат файлаpdf
    Имя файлаMS Visual C.pdf
    ТипДокументы
    #22453
    страница19 из 37
    1   ...   15   16   17   18   19   20   21   22   ...   37

    Рис.
    10.27. Демонстрация свойства
    AutoSizeMode

    BackColor
    — свойство дает возможность выбора извыпадающего списка цвета фона компонента. Например, если выбрать для кнопки синий цвет, то все ее поле будет закрашено синим.

    BackgroundImage
    — дает возможность выбора изображения, которое станет фоновым в компоненте.

    228 Часть II. Приложения Windows Например, если выбрать для кнопки ваше фото, то оно появится по всему полю кнопки.

    BackgroundImageLayout
    — задает тип размещения фонового изображения в компоненте подгоняется под размер окна компонента, разрешает действие масштабирование) и т. д. Значение свойства выбирается из выпадающего списка.

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

    CausesValidation
    — включает/выключает необходимость проверки на достоверность компонента вовремя получения им фокуса ввода (те. когда компонент становится активным. На самом деле это свойство подавляет или не подавляет возникновение события Если это событие не подавлено, тов его обработчике можно проверить на достоверность некоторые данные, когда компонент, содержащий свойство и событие
    Validating
    , получает фокус ввода. Например, в компоненте находится адрес электронной почты. Когда компонент становится активным, можно проверить, содержит ли адрес электронной почты символ @, обязательный для такого адреса.

    ContextMenuStrip
    — через это свойство к компоненту подключается его контекстное меню. Меню (компонент
    ContextMenuStrip
    ) должно быть определено в форме, и тогда оно станет "видимо" в этом свойстве. Контекстное меню представляет собой меню, которое выводится, когда пользователь нажимает правую кнопку мыши вовремя нахождения курсора мыши над компонентом. Например, можно задать такое меню для компонента, через который вводится текст, стем, чтобы иметь возможность в момент ввода изменять шрифт, искать фрагменты текста или иметь возможность копирования текста в буфер системы, вставки его оттуда в необходимое место другого текста, и т. д.

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

    DoubleBuffered
    — свойство задает возможность снижения мерцания изображения компонента при его перерисовке за счет использования дополнительного буфера памяти.

    Enabled
    — свойство задает право доступа к компоненту значение true означает, что доступ разрешен, false
    — запрещен. В случае с формой значение свойства,
    Глава
    10. Продолжение изучения среды Visual C++
    229 равное false
    , приведет к блокировке формы после компиляции ничто в ней не будет реагировать на мышь, даже закрыть форму будет невозможно.

    Font
    — задает характеристики шрифта формы. Все компоненты, расположенные в форме, унаследуют ее шрифт. Чтобы задать значение свойства
    Font
    , нужно щелкнуть на кнопке с многоточием в поле свойства, после чего откроется диалоговое окно выбора характеристик шрифта. На рис. 10.28 видна новая установка шрифта, которую мы выполнили, работая со свойством Рис 10.28. Появление нового значения свойства
    Font после пользовательской установки — это свойство задает цвет переднего плана компонента. Цвет можно выбрать из раскрывающегося списка, который появится, если нажать на кнопку в поле этого свойства.

    FormBorderStyle
    — задает стиль окантовки формы, который выбирается из выпадающего списка. По умолчанию принято значение
    Sizable
    (форма может изменять свои размеры в режиме исполнения откомпилируйте приложение с формой и попробуйте потянуть мышью за стороны формы — форма растянется/сузится). Другие значения этого свойства не допускают такой "вольности.

    HelpButton
    — задает возможность вывода кнопки помощи в заголовке компонента. Эта кнопка (с вопросительным знаком в ее поле) появляется в заголовке формы слева от кнопки
    (закрыть форму) и может служить средством вывода сообщения пользователю, имеющего характер помощи (если вы, конечно, сделаете обработку этой кнопки. Обработка кнопки состоит в создании обработчика события
    HelpRequested формы. Как создавать обработчики событий, мы рассмотрим позже. Однако следует помнить, что кнопка помощи появится в заголовке формы при условии, что кнопки (это свойства формы)
    MaximizeBox и
    MinimizeBox будут отключены (те. в заголовочной полосе формы не будет кнопок свертывания и развертывания окна формы (рис. 10.29)). Кроме того, после создания обработчика кнопка реагирует только на нажатие клавиши , те. обычной клавиши помощи. Код обработчика события
    HelpRequested приведен в листинге 10.1, а результат нажатия клавиши на рис. 10.30. Листинг 10.1

    private: System::Void Form1_HelpRequested(System::Object^ sender,
    System::Windows::Forms::HelpEventArgs^ hlpevent)
    {
    Проверка действия кнопки Help",
    "Приложение 10.1_2010,
    MessageBoxButtons::OK,MessageBoxIcon::Asterisk);
    }

    230 Часть II. Приложения Windows Кнопка
    Help появляется только при отключенных кнопках Свернуть
    /
    развернуть окно формы
    Кнопки Свернуть
    /
    Включение кнопки
    Help будет проигнорировано развернуть в заголовке формы включены
    Рис.
    10.29. Задание кнопки помощи в заголовке формы
    Рис.
    10.30. Проверка действия кнопки
    Help

    Icon
    — дает возможность подключения к форме пиктограммы если нажать кнопку с многоточием в поле этого свойства, то откроется диалоговое окно для выбора пиктограммы (файла с расширением ico). Выбранная пиктограмма попадет в заголовок формы.

    ImeMode
    — подключает к компоненту (посредством выбора из выпадающего списка) редактор с различными режимами обработки входных данных
    Method Editor (IME) (это специальная программа, которая дает возможность
    Глава
    10. Продолжение изучения среды Visual C++
    231 пользователям вводить различные нестандартные символы, например японские, с помощью стандартной клавиатуры.

    IsMdiContainer
    — свойство, показывающее, является ли форма контейнером для многодокументного интерфейса (те. является ли она одной из форм так называемого приложения. Мы будем строить приложения со стандартным документным интерфейсом (SDI).

    KeyPreview
    — пояснение этого свойства связано с понятием "событие формы. С большинством компонентов связаны ситуации, названные "событиями, которые происходят в момент воздействия на компонент чего-либо. Например, когда форма начинает изменять свои размеры, происходит событие
    Resize
    , когда форма начинает на экране прорисовываться, наступает событие
    Paint
    , когда над формой появляется курсор мыши, возникает событие
    MouseMove
    , и т. д. Чтобы отреагировать на появление события, формируют специальные участки программы, называемые обработчиками событий. В этих обработчиках программисты пишут команды на С/С++, которые и отражают реакцию на событие. Например, мы хотим, чтобы при щелчке мышью на форме форма покраснела (не от стыда, конечно. Для этого мы должны создать обработчик события формы с именем
    Click
    . Заготовка обработчика события формируется довольно просто надо открыть вкладку Events в окне Properties (щелкнуть мышью на кнопке, выбрать нужное событие, на которое мы хотим предусмотреть реакцию допустим, это событие
    Click
    , возникающее при щелчке мышью в поле формы, и дважды щелкнуть мышью в поле этого события. Среда программирования мгновенно создаст в файле формы заготовку заголовок функции, которая должна будет выполниться сразу, как только наступит это событие, и пустое тело функции, в которое мы должны вписать свои команды на С/С++, отражающие алгоритм реакции на событие. Для нашего примера надо изменить цвет формы, а это можно сделать, если ее свойству
    ForeColor придать значение "красный цвет. А теперь, что касается свойства
    KeyPreview
    . Когда это свойство принимает значение, то форма получает все события
    KeyPress
    (событие
    KeyPress возникает, когда нажимается несимвольная клавиша (например, управляющая, однако вместе с этим возникают и события
    KeyDown и
    KeyUp
    ). Событие
    KeyDown чаще всего возникает при нажатии клавиша событие
    KeyUp возникает, когда нажатую клавишу отпускают. Причем эти события наступают для формы раньше, чем они наступают для тех ее компонентов, которые в данный момент породили такие события. Например, существует компонент
    TextBox
    , с помощью которого вводят данные с клавиатуры. При включенном свойстве
    KeyPreview у формы, как только нажали клавишу для ввода символа в поле компонента
    TextBox
    , сразу возникают указанные события. И только после этого они (эти события) возникнут у самого компонента
    TextBox

    232 Часть II. Приложения Windows Если же свойство
    KeyPreview отключено, то при нажатии клавиш в поле
    TextBox рассмотренные события наступят только для
    TextBox

    Language
    — позволяет выбрать из выпадающего списка язык, на котором предполагается работать с формой.

    Localisable
    — это свойство связано с настройкой приложения на различные "культуры, те. на специфику данных отдельных стран.

    Locked
    — включение блокировки компонента, в результате чего компонент теряет свойство переместимости или изменения размеров. При этом в левом верхнем углу компонента появляется пиктограмма замка.

    MainMenuStrip
    — через это свойство к компоненту подключается главное меню его компонент с именем menuStrip надо поместить, например, в форму ион станет "виден в свойстве.

    MaximumSize
    — максимальный размер формы. Если задано
    0;0
    , то форма безразмерная рассмотрены в свойстве
    KeyPreview

    Opacity
    — задает уровень затемнения (прозрачности) формы. Значение задается в процентах. Чем ниже процент, тем более прозрачна форма в режиме исполнения задает отступы внутри компонента. Чтобы лучше понять смысл этого свойства, разберем одновременно и свойство оно определяет пространство вне компонента, которое "держит" другие компоненты на заданной дистанции от границ данного компонента. Свойство
    Padding определяет пространство внутри компонента, которое "держит" на заданной дистанции от границ компонента содержимое компонента (например, значение его свойства
    Text
    ). Разница между свойствами
    Padding и
    Margin показана на рис. 10.31. Рис 10.31. Демонстрация разницы между свойствами
    Padding и
    Margin
    Глава
    10. Продолжение изучения среды Visual C++
    233

    RightToLeft
    — это свойство введено с учетом особенностей письменности народов, у которых текст идет справа налево (например, у арабов или евреев. Если значение установлено в
    Yes
    , то компоненты, содержащие текст, станут выводить его справа налево.

    Size
    — задает размеры компонента. Попробуйте растянуть форму и посмотрите, как изменятся значения этого свойства.

    SizeGripStyle
    — это свойство позволяет задать вывод/невывод калибровочной полоски (захватки) в правом нижнем углу формы (рис. 10.32). Рис 10.32. Демонстрация задания свойства
    SizeGripStyle

    StartPosition
    — свойство задает стартовую позицию формы в режиме исполнения приложения. Значение выбирается из выпадающего меню. Если, например, задать значение
    CenterScreen
    , то форма начнет выводиться по центру экрана.

    Tag
    — в этом свойстве можно задавать некоторые данные, чтобы потом ими пользоваться при решении тех или иных задач. Это нечто вроде буферной памяти, связанной с компонентом.

    Text
    — в этом свойстве задают название компонента. Например, для кнопки можно написать "Завершение работы приложения.

    TopMost
    — свойство определяет, будет ли данная форма всегда помещаться над другой.

    TransparencyKey
    — свойство задает цвет, которым будут высвечиваться прозрачные области формы.

    234 Часть II. Приложения Windows Form

    UseWaitCursor
    — свойство задает, будет ли использоваться курсор в виде песочных часов (курсор ожидания) для данного компонента и всех его потомков или нет.

    WindowState
    — свойство задает состояние окна формы. Перед тем как форма выведется, это свойство всегда сохраняет значение
    Normal
    , несмотря на первоначальное значение данного свойства. Это состояние отражается в свойствах
    Height
    ,
    Left
    ,
    Top и
    Width
    . Если форма "прячется" после того как она была показана, то эти свойства отражают предыдущее состояние до тех пор, пока форма снова не покажется, несмотря на изменения, сделанные в свойстве изменения свойств можно делать ив режиме исполнения. События формы

    Cобытия формы показаны на рис. 10.33. Опишем некоторые из них.

    Activated
    — возникает, когда форма активизирована.

    Click
    — возникает при щелчке мышью в форме.

    ControlAdded
    — возникает, когда в форму добавлен новый компонент. С — возникает, когда компонент удален из формы. С — возникает, когда у формы изменяется свойство
    Cursor

    DoubleClick
    — возникает после двойного щелчка в форме.

    FormClosed
    — возникает после закрытия формы.

    FormClosing
    — возникает перед закрытием формы.

    HelpButtonClicked
    — возникает после щелчка на кнопке
    HelpButton

    HelpRequested
    — возникает при нажатии клавиши . Рис 10.33. События формы
    Глава
    10. Продолжение изучения среды Visual C++
    235

    Load
    — возникает перед первым выводом формы.

    Paint
    — возникает, когда форма перерисована.

    Scroll
    — возникает, когда в форме начинается прокрутка.

    Shown
    — возникает, когда форма впервые выведена. Некоторые методы формы

    Форма имеет большое количество методов, которые можно посмотреть, открыв
    Help и набрав в поле поиска появившегося окна Form Members. Рассмотрим только некоторые из методов формы.

    Close()
    — закрывает форму. Если закрывается главная форма, приложение закрывается. Ресурсы, занятые формой, освобождаются.

    Hide()
    — форма становится невидимой.

    Show()
    — выводит форму на экран.

    ShowDialog()
    — показывает форму в модальном режиме. Если форма показана в модальном режиме, то приложение не может выполняться, пока форма не будет закрыта. Чтобы закрыть форму, открытую в модальном режиме, надо назначить свойству
    DialogResult кнопку, которая должна закрыть форму (например, О, и проверить это свойство на совпадение его значения с соответствующим значением такого же свойства кнопки. Дело в том, что когда метод выполнится, то он возвратит именно это заданное значение свойства в свойство формы стем же наименованием
    DialogResult
    . Это и станет сигналом того, что форма была открыта в модальном режиме и ее можно закрыть. Как вызывать из главной формы другие и как возвращаться в главную, видно из листинга 10.2, который показывает работу приложения стремя формами
    Form1
    ,
    Form2
    ,
    Form3
    . Из главной (стартовой)
    Form1
    вызываются остальные, причем
    Form2
    — в модальном режиме, а
    Form3
    — в обычном (немодальном). Если можно закрывать, нажимая кнопку Вызов Form1 или кнопку закрытия окна, и при этом все проходит успешно, то для
    Form2
    это не имеет места пока вы "правильно" не закроете эту форму, нажав кнопку Вызов Form1, форма не закроется. Отметим чтобы формы были видны одна из другой, надо в файл для главной формы перед командой using namespace поместить операторы
    #include "Form2.h"
    #include "Form3.h"

    Dispose()
    — форма разрушается и память, занятая ею, освобождается.

    Focus()
    — делает форму активной свойства
    Visible и
    Enabled принимают значение (форма становится видимой и доступной.

    236 Часть II. Приложения Windows Листинг Файл Form1.h private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
    {
    открытие Form2
    System::Windows::Forms::DialogResult dr;
    Form2 ^newDlg = gcnew Form2(); m: dr = newDlg->ShowDialog(); Вызывается Form2 в модальном режиме. В dr запоминается значение DialogResult. Когда Form2 закроется, то значение ее свойства DialogResult будет сравниваться стам перед закрытием формы мы внесем значение О в DialogResult):*/ if( dr == System::Windows::Forms::DialogResult::OK ) return; else
    {
    MessageBox::Show (Ошибка закрытия Form2"); goto m;
    }
    } private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e)
    {
    Вызов Form3
    Form3 ^f3 = gcnew Form3(); f3->Show();
    } private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e)
    { this->Close();
    } Файл Form2.h private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
    { this->DialogResult= System::Windows::Forms::DialogResult::OK; this->Close(); закрытие Form2
    }
    Глава
    10. Продолжение изучения среды Visual C++
    237 Файл Form3.h private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
    { this->Close();
    } Рисование графиков в форме
    В заключение покажем, как в форме можно рисовать графики. Вид формы с графиками функций и tan(x)
    показан на рис. 10.34. Коды обработчиков кнопок фрагменты файла приложения, выводящего графики функций) — в листинге. Рис 10.34. Графики синусоиды и тангенсоиды, построенные в форме
    Листинг 10.3
    #pragma once namespace My1022011
    { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms;

    238 Часть II. Приложения Windows Form
    using namespace System::Data; using namespace System::Drawing;
    ///
    /// Summary for Form1
    ///
    public ref class Form1 : public System::Windows::Forms::Form
    { public:
    Form1(void)
    {
    InitializeComponent();
    //
    //TODO: Add the constructor code here
    //
    } protected:
    ///
    /// Clean up any resources being used.
    ///

    Form1()
    { if (components)
    { delete components;
    }
    } private: System::Windows::Forms::Button^ button1; protected: private: System::Windows::Forms::Button^ button2; private: System::Windows::Forms::Button^ button4; private:
    ///
    /// Required designer variable.
    ///

    System::ComponentModel::Container ^components;
    #pragma region Windows Form Designer generated code
    ///

    /// Required method for Designer support — do not modify
    /// the contents of this method with the code editor. Объявление моих функций
    //--sin(x)----------------------- математические функции берутся из класса Math
    Глава
    10. Продолжение изучения среды Visual C++
    239
    double fs(double x)
    { return(Math::Floor(Math::Sin(x)));
    }
    //--tan(x)---------------------- double ft(double x)
    { return(Math::Floor(Math::Tan(x)));
    }
    ///
    void InitializeComponent(void)
    { this->button1 = (gcnew System::Windows::Forms::Button()); this->button2 = (gcnew System::Windows::Forms::Button()); this->button4 = (gcnew System::Windows::Forms::Button()); this->SuspendLayout();
    //
    // button1
    // this->button1->Location = System::Drawing::Point(12,
    436); this->button1->Name = L"button1"; this->button1->Size = System::Drawing::Size(165, 42); this->button1->TabIndex = 0; this->button1->Text = Синусоида this->button1->UseVisualStyleBackColor = true; this->button1->Click += gcnew System::EventHandler(this,
    &Form1::button1_Click);
    //
    // button2
    // this->button2->Location = System::Drawing::Point(222, 436); this->button2->Name = L"button2"; this->button2->Size = System::Drawing::Size(165, 42); this->button2->TabIndex = 1; this->button2->Text = L"Тангенсоида"; this->button2->UseVisualStyleBackColor = true; this->button2->Click += gcnew System::EventHandler(this,
    &Form1::button2_Click);
    //
    // button4
    // this->button4->Location = System::Drawing::Point(413, 436); this->button4->Name = L"button4"; this->button4->Size = System::Drawing::Size(155, 42); this->button4->TabIndex = 3;

    240 Часть II. Приложения Windows Form
    this->button4->Text = Выход this->button4->UseVisualStyleBackColor = true; this->button4->Click += gcnew System::EventHandler(this,
    &Form1::button4_Click);
    //
    // Form1
    // this->AutoScaleDimensions = System::Drawing::SizeF(8, 16); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(643, 481); this->Controls->Add(this->button4); this->Controls->Add(this->button2); this->Controls->Add(this->button1); this->Name = L"Form1"; this->Text = L"Form1"; this->ResumeLayout(false);
    } конец инициализации
    #pragma endregion private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
    {
    Color ^col = gcnew Color();
    Pen ^pen = gcnew Pen (col->Red) ;
    Чтобы создать графический объект, надо получить ссылку на него,
    выполнив метод CreateGraphics() компонента (формы)
    Graphics ^im = this->CreateGraphics();
    // im->DrawLine(pen,20, 10, 300, 100);
    рисует линию между 2-мя точками (и (x2,y2)*/ вывод графика функции с использованием DrawLine() im->Clear(col->White); Закрасить предыдущее графическое изображение белым цветом float x1,y1,x2,y2; текущие координаты в пикселах в форме x1=0; y1=0; начальные координаты графика функции f(x) вычисление функции y=f(x) в точках x1,x2,... x2=x1; while(x2Width && y2Height)
    { x2+=5; следующая точка в пикселах по оси X y2=fs(x2)* 100; эта функция определена вначале модуля
    (*100 — для увеличения амплитуды, чтобы было нагляднее if(y2<0) y2*=-1; чтобы выводить отрицательные значения im->DrawLine(pen,x1,y1,x2,y2); // вывод линии между 2-мя точками
    точка 2 должна стать точкой 1, а точкой 2 должна стать следующая текущая точка */
    Глава
    10. Продолжение изучения среды Visual C++
    241
    x1=x2; y1=y2; continue;
    }
    } конец обработчика private: System::Void button2_Click(System::Object^ sender,
    System::EventArgs^ e)
    {
    Color ^col = gcnew Color();
    Pen ^pen = gcnew Pen (col->Red) ;
    Чтобы создать графический объект, надо получить ссылку на него,
    выполнив метод CreateGraphics() компонента (формы)
    Graphics ^im = this->CreateGraphics(); im->DrawLine(pen,20, 10, 300, 100); //20, 10, 300, 100
    рисует линию между 2-мя точками (x1,y1) и (x2,y2)*/ вывод графика функции с использованием DrawLine() im->Clear(col->White); закрасить предыдущее графическое изображение белым цветом float x1,y1,x2,y2; текущие координаты в пикселах на форме x1=0; y1=0; начальные координаты графика функции f(x) вычисление функции y=f(x) в точках x1,x2,... x2=x1; while(x2Width && y2Height)
    { x2+=10; следующая точка в пикселах по оси X y2=ft(x2)*50; эта функция определена вначале модуля
    (*50 — для увеличения амплитуды, чтобы было нагляднее if(y2<0) y2*=-1; чтобы выводить отрицательные значения im->DrawLine(pen,x1,y1,x2,y2); // вывод линии между 2-мя точками
    точка 2 должна стать точкой 1, а точкой 2 должна стать следующая текущая точка */ x1=x2; y1=y2; continue;
    }
    } конец обработчика private: System::Void button4_Click(System::Object^ sender,
    System::EventArgs^ e)
    { this->Close(); завершение приложения
    } конец обработчика
    }; конец класса Form1
    } конец пространства

    242 Часть II. Приложения Windows Символ это так называемый оператор контекстного разрешения (мы должны сказать компилятору, что будет использован глобальный идентификатор вместо локального, предваряя такой идентификатор символом ::
    ). Примеры

    :: identifier
    — это просто идентификатор

    class-name :: identifier
    — это идентификатор, относящийся к классу

    namespace :: identifier
    — это идентификатор, относящийся к пространству имен. При выводе графика любой функции мы применили метод
    DrawLine()
    класса
    Graphics
    . Но напрямую сформировать указатель на этот класс, чтобы воспользоваться его членами (в частности, методом
    DrawLine()
    ), нельзя. Надо сначала получить ссылку на этот графический объект через специальный метод формы, который называется Если написать оператор
    Graphics ^im = то получим желаемое (метод, по его определению, формирует ссылку на графический объект. Теперь через определенную нами ссылку типа
    Graphics можем добраться до членов класса
    Graphics
    (в частности, до необходимого нам метода
    DrawLine()
    , который рисует прямую линию между двумя точками. Рисование происходит с помощью специального механизма, находящегося в классе
    Pen
    (перо или ручка с пером. Чтобы добраться до этого механизма, надо объявить ссылку на этот класса потом через нее добраться до нужного нам члена класса. Формирование ссылки на класс происходит не само по себе, ас помощью утилиты gcnew, запускающей специальную программу-конструктор класса, который, в свою очередь, создает в выделенной утилитой памяти экземпляр класса, чтобы с ним можно было работать. Конструктор всегда имеет тоже имя, что и класс, для которого он создается, только это обычная функция, выполняющая определенные действия по инициализации членов-данных класса (те. придает им некоторые начальные значения. Конструктор для класса
    Pen имеет один параметр (цвет, потому что перо должно рисовать линии определенным цветом. Следовательно, прежде чем задавать работу конструктору класса
    Pen
    , нам нужно как-то определиться с цветом, который потом следует задать в качестве параметра этому конструктору. Цвета находятся в специальном классе
    Color
    (цвет. Чтобы добраться до нужного цвета в этом классе, надо сформировать ссылку на этот класса потом уже через нее достать нужный цвет. Отсюда имеем
    Color ^col = gcnew Пояснение
    Глава
    10. Продолжение изучения среды Visual C++
    243 Утилита gcnew запускает конструктор класса
    Color
    , формирует экземпляр класса в памяти и выдает ссылку на этот экземпляр в переменную col
    . Теперь любой цвет из
    Color можно достать через полученную ссылку так При этом откроется окно подсказчика, из которого остается только выбрать подходящий цвет. Когда вы начнете вводить начальные буквы нужного вам объекта, среда сразу установит подсветку на ближайший объект, имя которого начинается на вводимые вами символы, что ускоряет процесс выбора нужной строки. После выбора строки нажмите клавишу , иона попадет в ваш оператор. Если вы не нашли подходящую строку, значит в объекте, на который вы сформировали ссылку, такого члена-данного нет. После определения цвета можно выполнять конструктор пера
    Pen ^pen = gcnew Pen (Чтобы график выводился на поле формы, незанятое предыдущим графиком, следует графический объект, которым мы пользуемся для рисования (он фактически задает специальный холст для рисования, состоящий из точек-пикселов — это все более наглядно показано в Borland C++ Builder), закрасить нейтральным цветом, на фоне которого будет выводиться новый график. Чтобы рисовать график, из непрерывной функции получают в цикле дискретные значения ее точек и между двумя соседними точками проводят прямую линию. Естественно, чем больше точек на данной поверхности, тем более точным будет график.

    244 Часть II. Приложения Windows Form
    ГЛАВА Компоненты, создающие интерфейс между пользователем
    1   ...   15   16   17   18   19   20   21   22   ...   37


    написать администратору сайта