Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ТПКС-лаба1

.docx
Скачиваний:
12
Добавлен:
17.01.2020
Размер:
98.56 Кб
Скачать

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ ХАРКІВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ РАДІОЕЛЕКТРОНІКИ

Кафедра КІТАМ

ЗВІТ з лабораторної роботи № 1 з дисципліни: «Технологіі програмування комп’ютерних систем»

Варіант 2

Виконав: Перевірив:

ст. гр. АКТСІу -17-1 ст. викл. каф. КІТАМ

Черкашин В.А. Бронніков А.І.

Юрченко В.Р.

Харків 2019

1 РОЗРОБКА ПРОСТИХ .NET ПРОГРАМ ЗАСОБАМИ C++/CLI. ОБРОБКА ПОДІЙ

1.1 Мета роботи

Створення найпростішої віконної процедури з обробками подій засобами С++/CLI на основі Windows Forms у середовищі Microsoft Visual Studios 2010.

1.2 Практична частина та лістинг програмного коду

Файл MyForm:

#include "MyForm.h"

using namespace System; // використання простору імен System

using namespace System::Windows::Forms; // використання Windows Form

[STAThreadAttribute] // вказання однопотокового типу програми

void Main(array<String^>^ args) // Main() з параметрами командного рядка

{ Application::EnableVisualStyles(); // активація візуальних стилів

Application::SetCompatibleTextRenderingDefault(false);

PetrPoroshenko::MyForm form; // створення форми в межах проекту

Application::Run(%form); // запуск програми із параметром-формою

}

#pragma once

namespace PetrPoroshenko {

using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;

/// <summary>

/// Сводка для MyForm

/// </summary>

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

{

public:

MyForm(void)

{

InitializeComponent();

//

//TODO: добавьте код конструктора

//

}

protected:

/// <summary>

/// Освободить все используемые ресурсы.

/// </summary>

~MyForm()

{

if (components)

{

delete components;

}

}

private: System::Windows::Forms::Timer^ timer1;

protected:

private: System::ComponentModel::IContainer^ components;

private:

/// <summary>

/// Требуется переменная конструктора.

/// </summary>

#pragma region Windows Form Designer generated code

/// <summary>

/// Обязательный метод для поддержки конструктора - не изменяйте

/// содержимое данного метода при помощи редактора кода.

/// </summary>

void InitializeComponent(void)

{

this->components = (gcnew System::ComponentModel::Container());

this->timer1 = (gcnew System::Windows::Forms::Timer(this->components));

this->SuspendLayout();

//

// timer1

//

this->timer1->Tick += gcnew System::EventHandler(this, &MyForm::MyForm_DoubleClick);

//

// MyForm

//

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

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

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

this->Name = L"MyForm";

this->Text = L"MyForm";

this->Deactivate += gcnew System::EventHandler(this, &MyForm::MyForm_Deactivate);

this->Load += gcnew System::EventHandler(this, &MyForm::MyForm_Load);

this->ResizeBegin += gcnew System::EventHandler(this, &MyForm::MyForm_ResizeBegin);

this->DoubleClick += gcnew System::EventHandler(this, &MyForm::MyForm_DoubleClick);

this->MouseCaptureChanged += gcnew System::EventHandler(this, &MyForm::MyForm_MouseCaptureChanged);

this->Move += gcnew System::EventHandler(this, &MyForm::MyForm_Move);

this->ResumeLayout(false);

}

#pragma endregion

private: System::Void MyForm_Load(System::Object^ sender, System::EventArgs^ e) {

}

private: System::Void MyForm_ResizeBegin(System::Object^ sender, System::EventArgs^ e) {

int x = MyForm::Size.Width;

int y = MyForm::Size.Height;

Graphics ^g = MyForm::CreateGraphics();

g->Clear(Color::LightGray);

String ^s;

s = String::Format("Form size is changed to: {0} {1}",

x.ToString(), y.ToString());

g->DrawString(s, gcnew Drawing::Font("Arial", 12),

Brushes::Black, 5.0, 150.0);

}

private: System::Void MyForm_Move(System::Object^ sender, System::EventArgs^ e) {

int x = MyForm::DesktopLocation.X;

int y = MyForm::DesktopLocation.Y;

Graphics ^g = MyForm::CreateGraphics();

g->Clear(Color::LightGray);

String ^s;

s = String::Format("Form position: {0} {1}",

x.ToString(), y.ToString());

g->DrawString(s, gcnew Drawing::Font("Arial", 12),

Brushes::Black, 5.0, 110.0);

}

private: System::Void MyForm_DoubleClick(System::Object^ sender, System::EventArgs^ e) {

timer1->Interval=5000;

timer1->Start();

String ^s;

Graphics ^g = MyForm::CreateGraphics();

DateTime localDate;

localDate = System::DateTime::Now;

s = String::Format("Some Text with Timer {0}", localDate.ToString());

g->Clear(Color::White);

g->DrawString(s, gcnew Drawing::Font("Arial", 10), Brushes::Black, 5.0, 15.0);

}

private: System::Void MyForm_MouseCaptureChanged(System::Object^ sender, System::EventArgs^ e) {

String ^s;

Graphics ^g = MyForm::CreateGraphics();

s = String::Format("MousheCaptureChanged");

g->DrawString(s, gcnew Drawing::Font("Arial", 12),

Brushes::Black, 5.0, 200.0);

}

private: System::Void MyForm_Deactivate(System::Object^ sender, System::EventArgs^ e) {

String ^s;

Graphics ^g = MyForm::CreateGraphics();

s = String::Format("Deactivated");

g->DrawString(s, gcnew Drawing::Font("Arial", 12),

Brushes::Black, 5.0, 230.0);

}

};

}Результат виконання завдання подано на рисунках 1.1-1.4

Рисунок 1.1 – Обробка подій Move та MouseCaptureChanged

Рисунок 1.2 – Обробка подій Resize

Рисунок 1.3 – Обробка подій Timer

Рисунок 1.4 – Обробка подій Focus

ВИСНОВКИ

На лабораторній роботі було досліджено середовище програмної розробки Microsoft Visual Studio 2010 та побудовано вікно з обробками подій засобами C++/CLI на основі Windows Forms.

Програма, яка використає в якості основної мови програмування С++/CLI, створює вікно Windows Form і має на меті використання .NET Framework, як правило розпочинається з виклику функції Main(), яка зазвичай містить активізацію деяких параметрів та команди запуску програми з формою. Основні програмні блоки знаходяться у файлі *.h.

Основою програми є вікно, що повідомляє про результати обробки подій, тобто заданих запропонованих випадків, коли щось трапилось (натиснута клавіша, змінився розмір вікна, змінився параметр фокусу та ін.), шляхом виведення форматованого тексту у вікні (за допомогою функції DrawString) та виведення вікна з повідомленням (за допомогою функції MessageBox).