C++. Создание приложения типа 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).

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

 

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

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

File -> New Project...

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

MS Visual Studio 2010. Вызов команды создания нового проектаРисунок 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) может объединять в себе несколько проектов. В нашем случае имя решения остается таким как и имя проекта.

MS Visual Studio - C++. Окно "New Project" создания нового проектаРисунок 3. Окно «New Project» создания нового проекта

 

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

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

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

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

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

MS Visual Studio. Шаблон Windows Forms. Основные элементы окна приложенияРисунок 4. Основные элементы окна приложения

 

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

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

View -> Code

Visual C++. Шаблон Windows Forms. Команда перехода в режим набора текста программыРисунок 5. Команда перехода в режим набора текста программы

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

Visual C++. Шаблон Windows Forms. Кнопка перехода в режим набора текста программыРисунок 6. Кнопка перехода в режим набора текста программы

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

C++. MS Visual Studio. Режим просмотра текста программыРисунок 7. Режим просмотра текста программы

 

5. Текст модуля «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.

 

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

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

Visual C++. Шаблон Windows Forms. Файлы C++, которые создаются в проекте типаРисунок 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«.

 

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

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