003 — Создание приложения типа Windows Forms Application в MS Visual Studio — C++. Обзор основных файлов проекта

Создание приложения типа Windows Forms Application в MS Visual Studio — C++. Обзор основных файлов проекта

В данной теме рассмотрены особенности создания приложения типа Windows Forms Application с поддержкой языка C++. Такой тип приложения поддерживает все преимущества технологии .NET Framework.

 

Выполнение

  1. Загрузить Microsoft Visual Studio.

В результате будет создано окно с активной вкладкой Start Page (рисунок 1).

05_02_00_003_01_Рисунок 1. Окно Microsoft Visual Studio

 

  1. Создание приложения типа Windows Forms Application.

Чтобы создать новый проект (решение) на языке C++, нужно выбрать последовательность команд (рис. 2):

File -> New Project...

Система Microsoft Visual Studio предлагает разные виды шаблонов приложения для программирования на языке C++ (рис. 2).

05_02_00_003_02_Рисунок 2. Вызов команды создания нового проекта

В результате откроется окно «New Project» (рисунок 3), в котором нужно выбрать шаблон «Visual C++» и тип приложения Windows Forms Application.

В поле «Location:» надо задать путь к папке, в которой будет сохранен проект. В нашем случае задан следующий путь

C:\Programs\CPP

В поле Name задается имя приложения. В нашем случае это имя «MyApp01«.

Если включена опция «Create directory for solution» (создать директорию для решения), то проект будет сохранен в папке

C:\Programs\CPP\MyApp01

В поле «Solution name:» задается имя решения. Решение (solution) может объединять в себе несколько проектов. В нашем случае имя решения остается таким как и имя проекта.

05_02_00_003_03_Рисунок 3. Окно «New Project» создания нового проекта

 

  1. Основные элементы оконного интерфейса для работы с программой.

После выбора «ОК» в предыдущем окне «New Project«, система Microsoft Visual Studio создаст весь необходимый код для работы приложения типа Windows Forms Application.

В результате окно Microsoft Visual Studio примет вид как показано на рисунке 4.

В окне, в центре отображается основная форма приложения. На этой форме можно размещать компоненты. Компоненты размещаются на панели Toolbox (левая часть экрана).

Свойства формы или компонента отображаются в утилите Solution Explorer (правая часть экрана). Изменяя эти свойства, можно влиять на вид формы, поведение формы, реализовывать обработчики событий формы и прочее.

05_02_00_003_04_Рисунок 4. Основные элементы окна приложения

 

  1. Вызов режима ввода кода.

На данный момент активным есть режим проектирования формы. Чтобы перейти в режим набора текста программы, нужно вызвать команду Code с меню View (рисунок 5):

View -> Code

05_02_00_003_05_Рисунок 5. Команда перехода в режим набора текста программы

Другой вариант вызова команды перехода в режим набора текста, это клик на соответствующей кнопке в Solution Explorer (рисунок 6).

05_02_00_003_06_Рисунок 6. Кнопка перехода в режим набора текста программы

В результате отобразится текст программы.

05_02_00_003_07_Рисунок 7. Режим просмотра текста программы

 

  1. Текст модуля «Form1.h«.

При создании проекта, система Microsoft Visual Studio генерирует программный код, который сохраняется в различных файлах.

Главным файлом, в котором программист создает собственный код программы, есть файл «Form1.h«. Этот файл соответствует главной форме приложения. На главной форме размещаются различные компоненты. С помощью этих компонент реализуется решение конкретной задачи. При создании проекта создается пустая форма (рисунок 6). Кроме главной формы можно создавать другие формы и добавлять их к проекту.

Листинг файла «Form1.h» следующий.

#pragma once

namespace MyApp01 {

       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>
       /// Summary for Form1
       /// </summary>

       public ref class Form1 : public System::Windows::Forms::Form
       {
       public:
              Form1(void)
              {
                    InitializeComponent();
                    //
                    //TODO: Add the constructor code here
                    //
              }

       protected:
              /// <summary>
              /// Clean up any resources being used.
              /// </summary>

              ~Form1()
              {
                    if (components)
                    {
                           delete components;
                    }
              }

       private:
              /// <summary>
              /// Required designer variable.
              /// </summary>

              System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
              /// <summary>
              /// Required method for Designer support - do not modify
              /// the contents of this method with the code editor.
              /// </summary>

              void InitializeComponent(void)
              {
                    this->components = gcnew System::ComponentModel::Container();
                    this->Size = System::Drawing::Size(300,300);
                    this->Text = L"Form1";
                    this->Padding = System::Windows::Forms::Padding(0);
                    this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
              }
#pragma endregion
       };
}

Объясним некоторые фрагменты кода в тексте программы.

В вышеприведенном тексте создается пространство имен MyApp01 с помощью оператора

namespace MyApp01 {
...
}

В этом пространстве имен подключаются другие пространства имен из библиотеки .NET Framework:

System
System::ComponentModel
System::Collections
System::Windows::Forms
System::Data
System::Drawing

В пространстве имен MyApp01 создается класс с именем Form1. Этот класс отвечает главной форме приложения Form1.

Класс содержит конструктор, который вызывает метод

InitializeComponent();

В методе InitializeComponent() создается компонента-форма (переменная components), которая есть контейнером. Это означает, что на форме могут размещаться другие компоненты (кнопки, метки, поля ввода и т.д.). Также в методе InitializeComponent() настраиваются параметры формы: название заголовка, размер (300 * 300 пикселей), шрифт по умолчанию.

Деструктор класса ~Form1() уничтожает форму (переменная components) с помощью оператора delete.

 

  1. Файлы, которые создаются в проекте.

После создания проекта типа Windows Forms Application система Microsoft Visual Studio создает несколько файлов.

05_02_00_003_08_Рисунок 8. Файлы C++, которые создаются в проекте типа Windows Forms Application

Как было сказано раньше, главным файлом есть файл «Form1.h» (см. п. 5). Также, согласно правилам языка C++, создается файл реализации «MyApp01.cpp«. В этом файле есть главная функция main(). Этот файл содержит код отображающий главную форму.

Листинг файла «MyApp01.cpp» следующий:

// MyApp01.cpp : main project file.
#include "stdafx.h"
#include "Form1.h"

using namespace MyApp01;

[STAThreadAttribute]

int main(array<System::String ^> ^args)
{
     // Enabling Windows XP visual effects before any controls are created
     Application::EnableVisualStyles();
     Application::SetCompatibleTextRenderingDefault(false);

     // Create the main window and run it
     Application::Run(gcnew Form1());
     return 0;
}

Файл «MyApp01.vcxproj«. Это главный файл проектов на Visual C++, которые генерируются с использованием мастера приложений (Application Wizard). В нем содержится информация о версии Visual C++, в которой сгенерирован файл, информация о платформах, настройках и особенностях (характеристиках) проекта выбранных с помощью мастера приложений (Application Wizard).

Файл «MyApp01.vcxproj.filters«. Это есть файл фильтров для сгенерированных проектов на Visual C++ с использованием мастера приложений (Application Wizard). В нем содержится информация об ассоциации между файлами в вашем проекте и фильтрами. Эта ассоциация используется в интегрированной среде, чтобы показать группирование файлов с одинаковыми расширениями.

Файл «AssemblyInfo.cpp«. Содержит пользовательские атрибуты для модификации данных сборки.

Файли «StdAfx.h» и «StdAfx.cpp«. Они используются для создания файла скомпилированных заголовков (PCH) с именем «MyApp01.pch» и скомпилированных типов названных «StdAfx.obj«.

 

  1. Запуск проекта на выполнение.

Для запуска проекта на выполнение используется команда Start Debuggin из меню Debug (клавиши F5).