Как создать Windows Forms проект на C++

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++
Если у вас более старая версия Visual Studio, то интерфейс будет выглядеть немного иначе, однако данная функциональность будет той же. Также не исключено, что у Вас может быть данный тип проекта для C++ (на некоторых версиях формы для C++ были доступны сразу после установки IDE). Если же у Вас, как и у нас поиск не дал нужных результатов, то переходим к следующему шагу.
Шаг 1. Создание CLR проекта
Поскольку непосредственно Windows Forms проекта у нас не оказалось, мы обхитрим студию и создадим пустой CLR проект на С++. Для этого в том же окне поиска необходимо найти и выбрать Новый CLR проект , ввести имя (если нужно, то поменять директорию расположения проекта) и немного подождать, пока студия сделает свою работу.

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

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

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

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

Visual C++ -> UI -> Форма Windows Forms
После данной операции нас ждёт разочарование в виде ошибки Исключение из HRESULT: 0x8000000A :

Вместо формы получили ошибку
Шаг 3. Исправляем появившуюся ошибку
Данная ошибка появляется из-за того, что для создания окна формы приложению необходима основная программа, создающая форму и переключающая управление на неё, однако после добавления новой формы файл Form1.cpp предсказуемо создаётся пустым. Поэтому необходимо добавить основную программу в файл с формой:
#include «Form1.h» #include using namespace имя_вашего_проекта; int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
В результате код файла Form1.cpp будет выглядеть следующим образом:

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

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

Программист, сооснователь programforyou.ru, в постоянном поиске новых задач и алгоритмов
Языки программирования: Python, C, C++, Pascal, C#, Javascript
Выпускник МГУ им. М.В. Ломоносова
Programforyou — это сообщество, в котором Вы можете подтянуть свои знания по программированию, узнать, как эффективно решать те или иные задачи, а также воспользоваться нашими онлайн сервисами.
Copyright © 2017 — 2023 Programforyou — помощь с программированием | programforyou.ru
Как создать clr приложение в visual studio 2019
БлогNot. Visual Studio 2013 и выше: как сделать приложение Windows Forms?
Visual Studio 2013 и выше: как сделать приложение Windows Forms?
Ну да, такого «мастера приложений с одной главной формой», как в версии 2010, нет. Но это не значит, что работа с формами не поддерживается — просто создавайте пустой проект CLR и добавляйте форму в него «вручную». Вот весь процесс, расписанный по шагам:
Меню Создать проект, Visual C++, CLR, Пустой проект CLR. После создания проекта нажать на вкладку Проект, Добавить новый элемент, UI, форма Windows Form. Потом добавить следующий код в файл MyForm.cpp :
#include "MyForm.h" //Здесь пишем имя h-файла вашей формы! using namespace Example1; //Здесь пишем имя вашего проекта! [STAThreadAttribute] int main(array ^args) < Application::EnableVisualStyles(); Application::SetCompatibleTextRenderingDefault(false); Application::Run(gcnew MyForm()); //Тоже пишем имя своей формы, если оно не MyForm return 0; >
Далее нажимаем вкладку Проект, Свойства имя_текущего_проекта.
Выбираем Свойства конфигурации, Компоновщик, Система, справа в поле Подсистема вставляем Windows (строку /SUBSYSTEM:WINDOWS ).
Затем Свойства конфигурации, Компоновщик, Дополнительно, справа поле Точка входа, вставляем строку main
Приведённый вариант кода MyForm.cpp — не единственный, в новых версиях Studio лучше делать так:
#include "MyForm.h" using namespace System; using namespace System::Windows::Forms; [STAThread] int main(array^ arg) < Application::EnableVisualStyles(); Application::SetCompatibleTextRenderingDefault(false); Project1::MyForm form; //Вместо Project1 - имя вашего проекта Application::Run(%form); return 0; >
Это всё, можно работать.
Для экспорта шаблона делаем следующее: из меню «Файл» выбираем пункт «Экспорт шаблона». В появившимся мастере шаблонов соглашаемся со всем, только проверяем, чтобы стояла галочка на «Автоматический импорт шаблонов в Visual Studio». Жмем Готово. Теперь в мастере проектов появился новый пункт.
P.S. Проверил в Visual Studio 2015, подход также сработал. Увы, экспорт шаблона в некоторых сборках версий Studio 2015 и 2017 может работать криво, не добавляя в шаблон файлы .cpp и .h!
P.P.S. В Visual Studio 2019 действия те же, но если после установки Visual Studio 2019 отсутствует конструктор формы Windows Forms, читаем и ставим это.
Если устанавливается актуальная сборка версии Enterprice (16.5.X и старше), установить рабочую нагрузку «Разработка классических приложений» и из раздела «Дополнительные компоненты» отметить «Поддержка C++/CLI» (C++/CLI Support)
Цитируем официальную доку:
«В Visual Studio 2017 и более поздних версиях поддержка C++/CLI является необязательным компонентом. Чтобы установить его, откройте Visual Studio Installer из меню «Пуск» Windows. Убедитесь, что установлен флажок Разработка классических приложений на C++, и в разделе Дополнительные компоненты также следует проверить поддержку C++/CLI.
«Individual Components» (Индивидуальные компоненты) — «Поддержка C++/CLI» («C++/CLI support»)»
Возможно, без обновления версии поможет вот это дополнение.
В версии Studio 2019 примерно со сборки 16.5 (см. меню Справка — О программе) отдельно «доставлять» конструктор форм не нужно, создаваемый тип проекта называется «Пустой проект CLR (.NET Framework)», а сохранить шаблон можно из меню Проект — Экспорт шаблона. В принципе, для работы с C++ и Windows Forms нужны только следующие нагрузки:

Рабочие нагрузки VS 2019 CPP
09.02.2015, 14:54 [17127 просмотров]
Создание графического приложения (Windows Forms) в Visual Studio
Для последней версии Visual Studio 2013 (всех редакций):
Создать проект->Visual C++->CLR->Пустой проект CLR->
После создания проекта нажать на вкладку Проект->Добавить новый элемент->UI->форма Windows Form.
Потом добавить следующий код в MyForm.cpp:
1 2 3 4 5 6 7 8 9 10 11 12 13
#include "MyForm.h" //the header name for your form using namespace CyberForum; //name of your project [STAThreadAttribute] int main(arraySystem::String ^> ^args) { Application::EnableVisualStyles(); Application::SetCompatibleTextRenderingDefault(false); Application::Run(gcnew MyForm()); return 0; }
Далее нажимаем вкладку проект-Свойства : (имя текущего проекта).
Свойства конфигурации — Компоновщик — Система — Подсистема (Configuration Properties — Linker — System — SubSystem): вставляем Windows (/SUBSYSTEM:WINDOWS).
Свойства конфигурации — Компоновщик — Дополнительно — Точка входа (Configuration Properties — Linker — Advanced — Entry Point): вставляем main
Также в MyForm.cpp можно добавить следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13
#include "MyForm.h" using namespace System; using namespace System::Windows::Forms; [STAThread] void main(arrayString^>^ arg) { Application::EnableVisualStyles(); Application::SetCompatibleTextRenderingDefault(false); Project2::MyForm form; //Project2 - name of your project Application::Run(%form); }
Сложение двух чисел в Visual Studio 2013 на C++ (CLR приложение)
В статье рассказывается как создать CLR приложение сложения двух чисел в Visual Studio 2013 на C++.
Создание проекта



Подготовка проекта
В отличии от Visual Studio 2010 тут CLR приложения создаются пустыми без формы. Зачем они это сделали — непонятно. Будем добавлять форму самостоятельно.
Щелкаем по проекту правой кнопкой и следуем иллюстрациям:




Далее перейдем в файл cpp нашей формы:

Допишем там вот такой код после единственной строчки:
using namespace System; using namespace System::Windows::Forms; [STAThread] void Main(arrayString^>^args) Application::EnableVisualStyles(); Application::SetCompatibleTextRenderingDefault(false); Additions2numbers::MyForm form; Application::Run(%form); >:
Внимание! Обратите внимание, что Additions2numbers — это название вашего проекта в коде выше. Поэтому, если ваш проект называется по-другому, то вставьте своё название проекта:

Щелкнем по проекту правой кнопкой и перейдем в его свойства:

В настройках компоновщика нужно в двух местах поменять настройки:


Жмем OK , и мы закончили прикручивать форму к нашему приложению.
Можете запустить приложение и проверить работоспособность. Если приложение скомпилируется и запустится, то всё норм. Иначе проверьте все шаги до этого:

Интерфейс приложения
Перейдем на форму. Можно сделать двумя способами:

Обратите внимание, что код кнопок и сама форма прописывается в h файле, а не cpp .
Перетащите два textBox на форму, в которые будем записывать наши числа:



Перетащите кнопку на форму:

Перетащите третий textBox на форму, в которую мы будем выводить информацию:


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

Теперь мы можем его растянуть вниз:


Написание кода основной программы
Щелкнете по кнопке двойным кликом:

Мы получили метод, в котором прописываем реакцию на клик нашей мыши:

В фигурных скобках пропишем код нашей программы по считыванию двух чисел, их сложении и выводе результата:
int x, y, z; //Считаем значение из первого lineEdit String^ S1 = textBox1->Text; //Переведем значение в число x = Convert::ToInt32(S1); //Считаем значение из второго lineEdit String^ S2 = textBox2->Text; //Переведем значение в число y = Convert::ToInt32(S2); //Посчитаем сумму z = x + y; //Выведем результат textBox3->Text = z.ToString();

Запуск программы
Немного поменял размеры компонентов и изменил текст на кнопке. Поэтому ниже на скринах компоненты чуть по-другому будут выглядеть:

Получаем наше приложение:

При вводе наших чисел получим вот это:

- Visual Studio 2017 Logo.svg by Microsoft Corporation / (2019-06-08)
- Visual Studio
- C++
- Сложение двух чисел
В статье рассказывается как создать CLR приложение сложения двух чисел в Visual Studio 2013 на C++.
В статье рассказывается как создать CLR приложение сложения двух чисел в Visual Studio 2013 на C++.
Harrix
- GitHub User
- TODO@mail.ru
Write an awesome description for your new site here. You can edit this line in _config.yml. It will appear in your document head meta (for Google search results) and in your feed.xml site description.