Cpp clr windows forms

Время чтения: 5 минут

Превью к статье о создании C++ Windows Forms проекта

Windows Forms — интерфейс программирования приложений, отвечающий за графический интерфейс пользователя. Он является частью .Net Framework и создан для того, чтобы упростить взаимодействие пользователя с элементами Win API. Причём не просто упростить, а буквально полностью скрыть низкоуровневое взаимодействие с графическими элементами путём создания набора базовых компонентов и классов. При этом используемые классы не привязаны к языку разработки, благодаря чему данный проект может использоваться как на родном для Microsoft C#, так и на других языках, например, C++, VB Net и F#. Но не смотря на свою кроссплатформенность в мире языков программирования, Windows Forms проекты легко создаются на C#, однако при попытке создания проекта на C++ возникает множество проблем.

Шаг 0. А вдруг получится сразу?

В настоящее время IDE, поддерживающих Windows forms, не так много — буквально одна только Visual Studio, более известная как просто «студия». Поэтому будем рассматривать создание и решение проблем именно в этой среде разработки. Первым шагом запустим студию, начнём создавать новый проект и попытаемся найти Windows forms проект для C++:

Создаём новый проект в студии

Создаём новый проект в студии

Ищем Winfows Forms для C++

Ищем Winfows Forms для C++

Если у вас более старая версия Visual Studio, то интерфейс будет выглядеть немного иначе, однако данная функциональность будет той же. Также не исключено, что у Вас может быть данный тип проекта для C++ (на некоторых версиях формы для C++ были доступны сразу после установки IDE). Если же у Вас, как и у нас поиск не дал нужных результатов, то переходим к следующему шагу.

Шаг 1. Создание CLR проекта

Поскольку непосредственно Windows Forms проекта у нас не оказалось, мы обхитрим студию и создадим пустой CLR проект на С++. Для этого в том же окне поиска необходимо найти и выбрать Новый CLR проект, ввести имя (если нужно, то поменять директорию расположения проекта) и немного подождать, пока студия сделает свою работу.

Ищем пустой CLR проект (.Net Framework)

Ищем пустой CLR проект (.Net Framework)

Создаём новый пустой CLR проект

Создаём новый пустой CLR проект

В результате Visual Stido создаст новый C++ CLR проект, который будет выглядеть примерно так:

Результат создания нового CLR проекта

Результат создания нового CLR проекта

Шаг 2. Добавить форму

Чтобы сделать CLR проект проектом Windows Forms, нужно просто добавить в него форму. Для этого в верхнем меню нужно выбрать ПроектДобавить новый элемент и в появившемся окне выбрать категорию Visual C++UI и затем выбрать Форма Windows Forms.

Проект - data-lazy-src=

Проект -> Добавить новый элемент

Visual C++ - data-lazy-src=

Visual C++ -> UI -> Форма Windows Forms

После данной операции нас ждёт разочарование в виде ошибки Исключение из HRESULT: 0x8000000A:

Вместо формы получили ошибку

Вместо формы получили ошибку

Шаг 3. Исправляем появившуюся ошибку

Данная ошибка появляется из-за того, что для создания окна формы приложению необходима основная программа, создающая форму и переключающая управление на неё, однако после добавления новой формы файл Form1.cpp предсказуемо создаётся пустым. Поэтому необходимо добавить основную программу в файл с формой:

#include "Form1.h"

#include <Windows.h>

using namespace имя_вашего_проекта;

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false);
    Application::Run(gcnew Form1);
    return 0;
}

В результате код файла Form1.cpp будет выглядеть следующим образом:

Добавление основной программы к форме

Шаг 4. Переоткрыть проект

Всё, что теперь осталось сделать — это закрыть текущее решение, а затем открыть его снова. Для этого можно закрыть саму студию, а можно выбрать в верхнем меню ФайлЗакрыть решение, после чего в появившемся окне выбрать только что созданный проект и открыть его заново.

Форма создалась, можно добавлять компоненты

Форма создалась, можно добавлять компоненты

Благодаря добавленному коду основной программы, студия сможет создать форму и на экране появится изображение формы, на которую можно будет добавлять компоненты, задавать их свойства, а также свойства самой формы.

Программист, сооснователь programforyou.ru, в постоянном поиске новых задач и алгоритмов

Языки программирования: Python, C, C++, Pascal, C#, Javascript

Выпускник МГУ им. М.В. Ломоносова

При создании нового проекта в Visual Studio для языка программирования C++ в мастере нет пункта Windows Forms. Но, безусловно, язык C++ поддерживает .NET и, соответственно, Windows Forms. Из этой статьи Вы узнаете, как создать в Visual Studio проект Windows Form на C++.

Сначала необходимо создать новый проект в Visual Studio.

Создание нового проекта C++ в Visual Studio

Запустите Visual Studio. Нажмите «Файл» → «Создать» → «Проект…». Или нажмите сочетание клавиш Ctrl + Shift + N на клавиатуре.

Создание нового проекта в Visual Studio

В появившемся окне «Создать проект» слева выберите группу «Visual C++», а в ней пункт «CLR». Щелкните по «Пустой проект CLR», введите имя проекта и нажмите кнопку «OK».

Пустой проект CLR на C++

Таким образом мы создали новый проект на языке программирования C++ в Visual Studio.

Добавление Windows Forms в проект C++

Теперь в созданный проект на C++ добавим форму Windows Forms.

Для этого щелкните в «Обозревателе решений» на названии проекта правой кнопкой мыши, выберите пункт «Добавить» и затем «Создать элемент…». Либо просто нажмите на клавиатуре сочетание клавиш Ctrl + Shift + A.

Добавление нового элемента в проект на C++

Загрузится окно «Добавление нового элемента». В нём щёлкните левой кнопкой мыши по группе UI в выберите элемент «Форма Windows Forms — Visual C++». Можете изменить имя создаваемой формы. По завершении нажмите кнопку «Добавить».

Добавление формы Windows Forms C++

Далее откройте файл исходного кода «MyForm.cpp» (если вы изменяли название формы, то файл будет иметь другое имя). В него добавьте следующий текст:

using namespace System;

using namespace System::Windows::Forms;

[STAThread]

void main(array<String^>^ arg) {

    Application::EnableVisualStyles();

    Application::SetCompatibleTextRenderingDefault(false);

    WinFormsTest::MyForm form; //WinFormsTest — имя вашего проекта

    Application::Run(%form);

}

Если Вы указали имя проекта отличное от WinFormsTest, то, соответственно, в коде укажите введённое Вами имя.

Сохраните изменения в файле.

Теперь необходимо произвести ряд настроек проекта в Visual Studio. Приступим.

Щёлкните по названию проекта в «Обозревателе решений» правой кнопкой мыши и затем нажмите кнопку «Свойства». Либо сразу нажмите сочетание клавиш Alt + Enter.

Открытие свойств проекта Windows Forms C++

В «Странице свойств» проекта слева выберите группу «Компоновщик» → «Система». В раскрывающемся списке «Подсистема» укажите Windows и нажмите кнопку «Применить».

Выбор подсистемы Windows для запуска приложения на C++

Далее в разделе «Дополнительно» группы «Компоновщик» в качестве «Точки входа» укажите функцию main (напишите словом). Щелкните кнопку «Применить», а затем «ОК».

Точка входа в приложение Windows Forms на C++

На этом настройка и создание проекта Windows Forms на C++ завершены! Чтобы просмотреть результат — запустите проект на выполнение (клавиша F5).

Запущенная форма Windows Forms в приложении на C++

Видеоурок создания проекта WinForms C++

Making a C++/CLR Windows Form Application in Visual Studio

To install CLR, It can be found by configuring the Visual Studio Installer.
You will also need .NET framework 4.7.2 what can be found below or you can retarget the solution via the project settings.

.NET Framework 4.7.2: https://dotnet.microsoft.com/en-us/download/dotnet-framework/thank-you/net472-developer-pack-offline-installer

C++ Windows forms. It focuses standard C++, not C++/CLI. The main difference between the example from this git and a C++ application is, that instead of using the console for user interaction —

cout << "Hello world" << endl;

you can use a Windows control, e.g. a TextBox

textBox1->AppendText("Hello World");

This extension extends Visual Studio 2019 by C++ Windows Forms projects. Applications created by such projects have a graphical user interface.

For more details, see here.

C++ Windows forms projects are an easy way to create programs with a graphical user interface in C++.

The programming language is C++ for the business logic and C++/CLI (a C++ dialect) for the graphical user interface.

C++ Windows Forms projects are great for learning C++. Visual C++ for Windows Forms has nearly all standard C++ (C++11/C++14/C++17) language features. Since the programs are not restricted to a simple console for user interaction, they are more attractive, more flexible and much easier to use.

Of course, you can also write serious C++ applications.

My introductory textbook (in German) teaches C++ from the scratch, using C++ Windows forms. It focuses standard C++, not C++/CLI. The main difference between the examples from this book and a traditional C++ textbook is, that instead of using the console for user interaction

cout << "Hello world" << endl;

you can use a Windows control, e.g. a TextBox

textBox1->AppendText("Hello World");

С развитием технологий, интеграция графического интерфейса пользователя (GUI) стала неотъемлемой частью многих приложений. Одной из ключевых технологий для создания GUI в среде Windows является Windows Forms. Однако начиная с Visual Studio 2012, непосредственная возможность создания проектов Windows Forms в Microsoft Visual C++ была упразднена. Это вызвало определенные сложности для разработчиков, привыкших к этой методике. Несмотря на это, возможности использования Windows Forms в C++ по-прежнему существуют, и разработчики могут воспользоваться некоторыми обходными путями для создания таких приложений. В данной статье подробно рассмотрим процесс создания Windows Forms в C++ с использованием Visual Studio.

Создание пустого проекта CLR

Первым этапом настройки проекта Windows Forms в C++ является создание пустого проекта CLR (Common Language Runtime). CLR является компонентом .NET Framework и позволяет запускать приложения, написанные на разных языках программирования. В данном случае, мы будем использовать язык C++.

Важно отметить, что создание пустого проекта CLR является основой для дальнейшей работы. В Visual Studio выберите опцию «Создать новый проект», затем выберите «Пустой проект CLR». Это обеспечит начальную структуру приложения, которая будет необходима для дальнейших шагов.

Настройка параметров проекта

Вторым шагом является настройка параметров проекта. Это необходимо для корректной работы будущего приложения, а также для возможности его запуска в Windows. В свойствах проекта выберите ветку «Компоновщик» – «Система» и в строке «Подсистема» укажите Windows. Это необходимо для указания системы, под которую будет компилироваться данный проект.

Следующим пунктом в настройке параметров является указание точки входа программы. Для этого перейдите в ветку «Дополнительно» и в строке «Точка входа» укажите название функции, которая будет являться начальной точкой для исполнения кода. Это значение критически важно, так как от него зависит, какое окно будет загружено при старте приложения.

После завершения настройки параметров проекта необходимо создать главное окно программы. Чтобы сделать это в Visual Studio, начнем с добавления нового элемента. В контекстном меню обозревателя решений выберите «Добавить» – «Создать элемент». В открывшемся окне выберите ветку интерфейса UI и выберите «Форма Windows Forms». Этот шаг добавит необходимую форму в ваш проект.

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

Описание точки входа

Точка входа – это функция, с которой начинается выполнение программы. В случае приложения Windows Forms на C++, точка входа является функцией main. Точка входа включает в себя несколько базовых, но критически важных шагов.

Вначале необходимо подключить необходимые для работы модули. Используйте соответствующие директивы using namespace System и using namespace System::Windows::Forms. Эти директивы нужны для доступа к классам и методам .NET Framework, которые обеспечивают работу с Windows Forms.

Далее указываем атрибут потока STAThread, который необходим для поддержки однопоточной модели COM (Component Object Model). Это важно для корректной работы объектов Windows Forms, которые являются частью данного потока. Атрибут STAThread указывает, что стартовый поток будет работать в Single Threaded Apartment.

После этого следует непосредственно описание функции main. Эта функция включает несколько ключевых вызовов:

  1. Включение визуальных стилей посредством метода EnableVisualStyles(). Этот шаг нужен для активации стандартного визуального оформления Windows.
  2. Установка режима рендеринга текста с помощью метода SetCompatibleTextRenderingDefault(false). Это обеспечивает совместимость рендеринга текста с самыми новыми технологиями.
  3. Запуск приложения с указанной формой как главное окно. Для этого используйте вызов Application::Run(%Form), где %Form – это ссылка на созданную форму.

Обзор основных классов Windows Forms

При работе с Windows Forms в C++, ключевыми являются несколько базовых классов, предоставляемых .NET Framework. Рассмотрим основные из них.

Класс Form

Класс Form является главным строительным блоком для создания оконных приложений Windows Forms. Этот класс представляет собой окно, входящее в состав приложения, и содержит множество свойств и методов для настройки визуального и функционального поведения окна.

Класс Application

Класс Application предоставляет методы для управления запуском и исполнением приложений Windows Forms. Ключевыми методами являются EnableVisualStyles()SetCompatibleTextRenderingDefault(), и Run(), которые были описаны ранее.

Класс Control

Класс Control является базовым для всех элементов управления, таких как кнопки, текстовые поля, метки и т.д. Он определяет общие свойства и методы для управления базовыми атрибутами GUI элементов, включая размеры, позицию, фон и цвет текста.

Работа с элементами управления

Создание эффективного GUI приложения требует умения правильно работать с различными элементами управления. Рассмотрим основные аспекты работы с элементами управления в Windows Forms.

Добавление элементов управления

Элементы управления, такие как кнопки, текстовые поля и метки, можно добавлять непосредственно в форму через дизайнер Visual Studio или программным образом в коде. Например, вы можете создать кнопку и добавить ее в форму следующим образом:

Button^ MyButton = gcnew Button();
MyButton->Text = "Click Me";
MyButton->Location = Point(50, 50);
this->Controls->Add(MyButton);

Обработка событий

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

Например, для обработки события нажатия кнопки можно воспользоваться следующим кодом:

MyButton->Click += gcnew EventHandler(this, &MyForm::MyButton_Click);

void MyForm::MyButton_Click(Object^ sender, EventArgs^ e)
{
    MessageBox::Show("Button Clicked");
}

Использование дополнительных библиотек

Одним из преимуществ использования C++ и .NET Framework является возможность интеграции дополнительных библиотек для расширения функциональности приложения. Например, можно подключить библиотеки для работы с графикой, сетевыми протоколами, базами данных и многими другими.

Тестирование и отладка

После завершения разработки приложения, следующим важным шагом является тестирование и отладка для обеспечения его корректной работы в различных условиях. Visual Studio предоставляет мощные инструменты для отладки, включая точки останова, просмотр значений переменных, пошаговое выполнение кода и многие другие.

Установка точек останова

Точки останова позволяют остановить выполнение программы в указанном месте и исследовать текущее состояние переменных и объектов. Это особенно полезно для поиска и исправления ошибок.

Пошаговое выполнение кода

Visual Studio позволяет выполнять код пошагово, что помогает увидеть каждое действие программы и понять, где могут возникать проблемы. Используйте функции «Step Into», «Step Over», и «Step Out» для управления шагами выполнения.

Развертывание и поддержка приложения

После завершения разработки и тестирования, следующим шагом является развертывание приложения на рабочие станции пользователей. Это включает создание установочного пакета и обеспечение всех необходимых зависимостей.

Создание установочного пакета

Visual Studio предоставляет инструменты для создания установочных пакетов, которые включают все необходимые файлы и библиотеки для корректной работы приложения на компьютерах пользователей.

Обновление и поддержка

После развертывания приложение необходимо поддерживать и обновлять, чтобы исправлять ошибки и добавлять новые функции. Важно обеспечить обратную связь с пользователями для своевременного выявления и устранения проблем.

Заключение

Работа с Windows Forms в C++ для Visual Studio требует определенных знаний и навыков, особенно в условиях отсутствия непосредственной возможности создания таких проектов после версии 2012. Однако, следуя описанным шагам, разработчик может успешно создавать и настраивать приложения с графическим интерфейсом. В статье рассмотрены основные этапы, включая создание и настройку проекта, работу с элементами управления, тестирование и развертывание приложения. Эти знания позволят разработчикам создавать мощные и удобные приложения, используя возможности Windows Forms.

Работа с Windows Forms в C++ открывает широкие возможности для создания различных приложений с графическим интерфейсом, от простых утилит до сложных корпоративных систем. Важно постоянно совершенствовать свои навыки и следить за новыми возможностями и обновлениями в мире разработки ПО.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Что делать если появилась надпись срок действия вашей лицензии windows истекает
  • Asana app for windows
  • Samp unable to execute windows 10
  • Как записать загрузочный диск windows 10 через ultraiso
  • Offline game for windows