Какие виды приложений можно создавать в visual studio на языке c
Microsoft C++ (MSVC) в составе интегрированной среды разработки (IDE) Visual Studio использует многие окна и средства аналогично другим языкам. Многие из них, включая обозреватель решений, редактор кода и отладчик, описаны в разделе Visual Studio IDE. Часто общее средство или окно располагает слегка отличающимся набором функций для C++ в сравнении с другими языками. Некоторые окна или средства доступны только в Visual Studio Professional или Visual Studio Enterprise.
Кроме общих инструментов в интегрированной среде разработки, Visual Studio MSVC имеет несколько средств, специально предназначенных для разработки машинного кода. Эти средства также перечислены в этой статье. Список средств, доступных в каждом выпуске Visual Studio, см. в разделе Инструменты и функции C++ в выпусках Visual Studio.
Создание проектов
По существу проект представляет собой набор файлов исходного кода и ресурсов, таких как изображения и файлы данных, встроенных в исполняемую программу или библиотеку.
Visual Studio позволяет использовать любые необходимые системы проектов или настраиваемые инструменты сборки, обеспечивая полную поддержку IntelliSense, просмотра и отладки:
MSBuild — это собственная система проектов для Visual Studio. Если выбрать в главном меню пункты Файл > Создать > Проект, появится список доступных шаблонов проектов MSBuild, с помощью которых можно моментально приступить к разработке приложений C++ различного назначения.
Эти шаблоны в большинстве случаев подходят для создания новых проектов, за исключением случаев, когда вы используете существующие проекты CMake или другую систему проектов. Дополнительные сведения см. в статье Создание проектов на основе MSBuild и управление ими.
CMake — это кроссплатформенная система сборки, интегрируемая в среду IDE Visual Studio при установке рабочей нагрузки "Разработка классических приложений на C++". Вы можете использовать шаблон проекта CMake для новых проектов или просто открыть папку с файлом CMakeLists.txt. Дополнительные сведения см. в статье Проекты CMake в Visual C++.
Все другие системы сборки C++, включая свободные наборы файлов, поддерживаются посредством функции Открыть папку. Вы можете создавать простые файлы JSON для вызова программы сборки и настройки сеансов отладки. Дополнительные сведения см. в статье Проекты "Открыть папку" для C++.
Добавить в систему управления версиями
Системы управления версиями позволяют координировать работу нескольких разработчиков, изолировать незавершенные компоненты от рабочего кода, а также осуществлять резервное копирование исходного кода. Visual Studio поддерживает Git и систему управления версиями Team Foundation (TFVC) с помощью окна Team Explorer.
Дополнительные сведения об интеграции Git с репозиториями Azure см. в статье Совместный доступ к коду в Visual Studio 2017 и Azure Repos Git. Дополнительные сведения об интеграции Git с GitHub см. в статье Расширение GitHub для Visual Studio.
Получение библиотек
Чтобы получить и установить сторонние библиотеки, используйте диспетчер пакетов vcpkg. Более 1700 пакетов библиотек с открытым исходным кодом в настоящее время доступны в каталоге.
Создание пользовательских интерфейсов с помощью конструкторов
Если в приложении есть пользовательский интерфейс, вы можете использовать конструктор для его быстрого заполнения элементами управления, такими как кнопки, списки и т. д. Если перетащить элемент управления из окна панели элементов в область конструктора, Visual Studio автоматически создаст ресурсы и код, необходимые для работы этого элемента. После этого вы можете написать собственный код, определяющий внешний вид элемента управления и его реакцию на события.
См. сведения о разработке пользовательского интерфейса для приложения универсальной платформы Windows в статье о проектировании и пользовательском интерфейсе.
Дополнительные сведения о создании пользовательского интерфейса для приложения MFC см. в разделе Классические приложения MFC. Сведения о программах Windows Win32 см. в разделе Классические приложения Windows.
Написание кода
После создания проекта все его файлы отображаются в окне обозревателя решений. (Решение представляет собой логический контейнер для одного или нескольких взаимосвязанных проектов.) При щелчке H- или CPP-файла в обозревателе решений он открывается в редакторе кода.
Редактор кода — это специализированный текстовый процессор исходного кода C++. Он выделяет цветом ключевые слова языка, имена методов и переменных и другие элементы кода, чтобы сделать код более читаемым и простым для понимания. Он также предоставляет средства для рефакторинга кода и переходов между разными файлами и основные сведения о том, как структурирован код. Дополнительные сведения см. в статье Написание и рефакторинг кода.
Добавление и изменение ресурсов
Программа Windows или DLL обычно включает такие ресурсы, как диалоговые окна, значки, изображения, локализуемые строки, экраны, строки подключения к базе данных или любые произвольные данные. Visual Studio включает средства для добавления и редактирования ресурсов. См. сведения о работе с ресурсами.
Сборка (компиляция и компоновка)
Выберите Сборка > Собрать решение в строке меню или нажмите клавиши CTRL+SHIFT+B, чтобы выполнить компиляцию и компоновку проекта. Предупреждения и ошибки сборки отображаются в списке ошибок (CTRL+\, E). Окно Вывод (ALT+2) содержит сведения о процессе сборки.
Дополнительные сведения о настройке сборок см. в разделах Работа со свойствами проектов и Проекты и системы сборок.
Можно также использовать компилятор (cl.exe) и многие другие связанные со сборкой автономные средства, такие как NMAKE и LIB, непосредственно из командной строки. Дополнительные сведения см. в разделах Создание кода C/C++ в командной строке и Справочник по сборке C/C++.
Отладка
Чтобы начать отладку, следует нажать клавишу F5. Выполнение приостанавливается в каждой заданной точке останова (F9). Вы можете построчно выполнять код (F10), просматривать значения указанных переменных или регистров, а в некоторых случаях даже вносить изменения в код и продолжать отладку без повторной компиляции. На следующем рисунке показан сеанс отладки, в ходе которого выполнение прекращено в точке останова. Значения членов структуры данных можно просмотреть в окне контрольных значений.
Дополнительные сведения см. в статье Отладка в Visual Studio.
Проверка
Visual Studio включает платформу модульного тестирования Майкрософт для C++, а также поддержку CTest, Google Test и Boost.Test. Запуск тестов из окна обозревателя тестов:
Анализ
В Visual Studio предусмотрены средства анализа статического кода, которые позволяют выявлять потенциальные проблемы в исходном коде. Эти средства включают реализацию проверки правил в соответствии с рекомендациями C++ Core Guidelines. Дополнительные сведения см. в разделе Общие сведения об анализе кода для C/C++.
Развертывание завершенных приложений
Вы можете развертывать классические приложения и приложения для универсальной платформы Windows, предназначенные для клиентов, посредством магазина Microsoft Store. Развертывание CRT обрабатывается автоматически в фоновом режиме. Дополнительные сведения см. в разделе Публикация приложений и игр Windows.
Собственный код C++ для классических приложений можно также развернуть на другом компьютере. Дополнительные сведения см. в разделе Развертывание классических приложений.
Дополнительные сведения о развертывании программы C++/CLI см. в разделе Руководство по развертыванию для разработчиков.
Следующие шаги
Узнайте больше о Visual Studio, прочитав одну из следующих вводных статей:
1. В первую очередь перечислим, какие компоненты должны быть установлены для создания графического приложения на языке С++. Их три, все относятся к разделу "Desktop development with C++":
- VC++ 2017 v141 toolset (x86,x64)
- Windows 10 SDK (10.0.15063.0) for Desktop C++ x86 and x64
- C++/CLI support
Первые два нужны для создания любого приложения на С++, третий именно для создания графической оболочки программы. Во время исследования данной темы мною подключалось два десятка других - пользы новичкам от них нету.
2. После установки среды разработки переходим
File > New > Project. ( ^+N )
В появившемся окне отыскиваем Installed > Visual C++ > CLR > CLR Empty Project
Поля внизу заполняем традиционным для таких программ способом. В названии проекта лучше не допускать пробелов, иначе вам потом придётся мудрить в коде.
3. Необходимо добавить в приложение главную форму. Есть два равносильных пути достижения этой цели.
Первый: в "Solution Explorer" правой кнопкой мыши на названии проекта, во всплывшем контексном меню Add > New Item.
Второй способ: в главном меню выбираем Project > Add New Item.
Или просто нажимаем ^+A
Во появившемся окне Visual C++ > UI > Windows Form
Главная форма программы создана. На некоторых компьютерах в данный момент возможно выскакивание ошибки 0x8000000A, в этом случае нужно просто закрыть вкладку.
Эта ошибка хорошо известна ещё по Visual Studio 2015. Можете почитать её обсуждение, к примеру, на сайте Microsoft по ссылке1, ссылке2, ссылке3. И более лучшего решения, чем закрывать вкладку, ещё нет. По всей видимости, команда разработчиков Visual Studio не считает эту ошибку достаточно серьёзным делом, чтобы ломать о неё копья.
4. Но мало просто создать форму, нужно вплести её в создаваемую программу. Для этого в "Solution Explorer" правой кнопкой мыши на названии проекта, во всплывшем контексном меню выбрать Properties .
В открывшемся окне произвести два действия.
• Linker > System > SubSystem , из раскрывающегося списка выбрать " Windows (/SUBSYSTEM:WINDOWS) "
• Linker > Advanced > Entry Point . В пустое поле вписать " main " (без кавычек).
5. В "Solution Explorer" двойным щелчком открыть в редакторе файл MyForm.cpp. Скопировать в него текст
Отлично, всё готово! Теперь проект компилируем и запускаем. Но если у вас ранее выскакивала 0x8000000A, то быстрее всего вам придётся перезапустить Visual Studio и вновь загрузить в нём проект. Далее ошибка ни в чём не проявится.
6. Для того, чтобы добавить на нашу только что созданную форму новые элементы, понадобится панель Toolbox. Полезно запомнить горячую клавишу ^!X
Работа с размещением элементов на форме сложностей вызвать не должна. Работает здесь всё удобнее, чем wxWidgets в CodeBlocks или wxDev-C++. Никаких глюков мною замечено не было.
Для изменения свойств только что созданного элемента интерфейса щёлкните на нём правой кнопкой и в контекстном меню выберите, соответственно, Properties.
Испытаем кнопку в работе. Сделаем так, чтобы по её названию появлялось окно с умным текстом. Двойной щелчок по элементу на форме вызовет редактор кода с уже прописанным в нём шаблоном. Добавим внутрь фигурных скобок команду
MessageBox::Show("Hello World",
"My heading", MessageBoxButtons::OKCancel,
MessageBoxIcon::Asterisk);
Запускаем и проверяем!
Если вдруг не запустится, то первым делом проверяем, что выставлено в раскрывающемся списке Solution Configurations . Он находится на панели инструментов (под главным меню). Там должно быть Release (а не Debug) .
Дополнительная информация
Альтернативные способы создания графических приложений в Visual Studio 2017.
1. UWP (Universal Windows Platfrom application) - универсальные приложения, способные запускаться на Windows 10, Windows 10 Mobile и аналогичных самых современных платформах от Microsoft. Платформа разработана как расширение Windows Runtime. Всё бы хорошо, но данные приложения не могут запускаться на более старых версиях Windows, даже на восьмёрке.
Пара слов для общего развития о нескольких технологиях, на которые вы будете постоянно натыкаться при чтении документации по разработке GUI в Visual Studio.
ATL (Active Template Library) - набор шаблонных классов языка C++, предназначенных для упрощения написания COM-компонентов.
MFC (Microsoft Foundation Classes) - библиотека объектов, помогающая профессиональным разработчикам создавать десктопные приложения. Что-то вроде более усложнённого и навороченного варианта ATL. ATL и MFC являются хорошими вещами, и с их задействованием также можно создавать графические приложения. Но это инструменты, требующие наличия углублённых знаний тематики.
IncrediBuild - технология ускорения компиляции и сборки приложений с помощью подключения дополнительных компьютеров. К методам создания графических интерфейсов это напрямую не относится.
Примечания:
В интернете можно наткнуться на заголовок "Full C and C++ IDE with Visual Studio". Оттуда закачиваются те же самые стандартные дистрибутивы Visual Studio, проверено по контрольным суммам.
P.S.
Теперь можно немного поэкспериментировать с элементами интерфейса. Ниже показан код простейшего графического калькулятора:
private: System::Void button6_Click(System::Object^ sender, System::EventArgs^ e) Application::Exit();
>
private: System::Void radioButton1_CheckedChanged(System::Object^ sender, System::EventArgs^ e) label1->Text = "+";
>
private: System::Void radioButton2_CheckedChanged(System::Object^ sender, System::EventArgs^ e) label1->Text = "-";
>
private: System::Void radioButton3_CheckedChanged(System::Object^ sender, System::EventArgs^ e) label1->Text = "*";
>
private: System::Void radioButton4_CheckedChanged(System::Object^ sender, System::EventArgs^ e) label1->Text = "/";
>
private: System::Void button5_Click(System::Object^ sender, System::EventArgs^ e) char sw = System::Convert::ToChar(label1->Text);
double a = System::Convert::ToDouble(textBox1->Text);
double b = System::Convert::ToDouble(textBox2->Text);
double r;
switch (sw) case '+':
r = a + b;
break;
case '-':
r = a - b;
break;
case '*':
r = a * b;
break;
case '/':
r = a / b;
break;
>
label2->Text = "Result: " + System::Convert::ToString(r);
>
А теперь можно попытаться сотворить что-то более похожее на стандартное window-приложение. Пока простейшее.
double iFirstNum;
double iSecondNum;
double iResult;
String^ iOperator;
private: System::Void btnC_Click(System::Object^ sender, System::EventArgs^ e) /*button C ("Global Clear" - clears the entire calculation*/
tbDisplay->Text = "0";
lblShowOp->Text = "";
>
private: System::Void btnCE_Click(System::Object^ sender, System::EventArgs^ e) <
/*button CE ("Clear Entry" is supposed to be used to clear only the thing you are currently
typing into the calculator, before you have performed any operation on it.*/
tbDisplay->Text = "0";
>
private: System::Void buttonS_Number_Click(System::Object^ sender, System::EventArgs^ e) <
//Number Buttons Event
Button ^ Numbers = safe_cast<Button^>(sender);
if (tbDisplay->Text == "0")
tbDisplay->Text = Numbers->Text;
else
tbDisplay->Text += Numbers->Text;
>
private: System::Void buttonS_Arithmetic_Click(System::Object^ sender, System::EventArgs^ e) <
//Operator Buttons Event
Button ^ op = safe_cast<Button^>(sender);
iFirstNum = Double::Parse(tbDisplay->Text);
tbDisplay->Text = "0";
iOperator = op->Text;
lblShowOp->Text = System::Convert::ToString(iFirstNum) + " " + iOperator;
>
private: System::Void btnEquals_Click(System::Object^ sender, System::EventArgs^ e) <
//Equals
iSecondNum = Double::Parse(tbDisplay->Text);
if (iOperator == "+")
iResult = iFirstNum + iSecondNum;
else if (iOperator == "-")
iResult = iFirstNum - iSecondNum;
else if (iOperator == "*")
iResult = iFirstNum * iSecondNum;
else if (iOperator == "/")
iResult = iFirstNum / iSecondNum;
else MessageBox::Show("Unknown operation.\nSomething wrong.",
"error", MessageBoxButtons::OK,
MessageBoxIcon::Error);
return;
>
private: System::Void btnDot_Click(System::Object^ sender, System::EventArgs^ e) <
//Decimal Point
if (!tbDisplay->Text->Contains("."))
tbDisplay->Text += ".";
>
private: System::Void btnPM_Click(System::Object^ sender, System::EventArgs^ e) <
//Plus-Minus
if (tbDisplay->Text->Contains("-"))
tbDisplay->Text = tbDisplay->Text->Remove(0, 1);
else
tbDisplay->Text = "-" + tbDisplay->Text;
>
Код создан на основе видеоролика
"Visual C++ Calculator Tutorial with Decimal Point and Backspace" (37:59, DJ Oamen, 2016 Jan 2, Visual C++ 2010) ,
но имеет ряд отличий.
Как продолжение, существует видеоролик
"Visual C++ Scientific Calculator Tutorial" (53:31, Paul Oamen, 2016 Oct 2, Visual Studio 2015). Судя по голосу, автор тот же. К показанному выше калькулятору прибавляется конвертер температуры и ряд более научных функций. Предупрежу, что итоговое "творение" имеет массу изъянов и глюков, поэтому видео можно просматривать исключительно для изучение приёмов программирования. Но не используйте его в качестве образца того, как нужно создавать калькуляторы.
Все элементы, необходимые для создания первого приложения, объединены в специальной программе IDE (англ. Integrated Development Environment), а именно:
- Кодовый редактор
- Транслятор (компилятор и/или интерпретатор)
- Средства автоматизированной сборки
- Отладчик
- Community – полнофункциональная, расширяемая и бесплатная версия интегрированной среды разработки для создания современных приложений Android, iOS и Windows, а также веб-приложений и облачных служб.
- Professional – платная версия, содержащая профессиональные инструменты и службы для индивидуальных разработчиков или небольших команд.
- Enterprise – платная версия, представляющая интегрированное комплексное решение для команд любого размера с высокими требованиями к качеству и масштабу.
Установка Visual Studio
После загрузки необходимо запустить установщик. В открывшемся окне нам предложат выбрать те компоненты, которые мы хотим установить вместе с Visual Studio. Стоит отметить, что Visual Studio — очень функциональная среда разработки и позволяет разрабатывать приложения с помощью множества языков и платформ.
Создание проекта в Visual Studio
Откройте Visual Studio и на стартовом экране выберите пункт «Создание проекта».
В следующем окне зададим название проекта. Пусть будет HelloWorld. На этом этапе также можно указать папку, где будет располагаться проект. После этого нажмите кнопку «Создать».
Visual Studio создаст и откроет проект. Окно будет выглядеть так:
Hello world
Под узлом «Зависимости» расположен непосредственно сам файл кода программы — Program.cs. Как раз он и открыт в центральном окне. Вначале разберёмся, что весь этот код собой представляет:
Пространство имён может включать другие пространства или классы. В нашем случае по умолчанию сгенерирован один класс — Program. Классы объявляются похожим способом: сначала идёт ключевое слово class, а потом название класса, и далее блок самого класса в фигурных скобках.
Слово static указывает, что метод Main статический, а слово void — что он не возвращает никакого значения. Далее в скобках у нас идут параметры метода. string[] args — это массив с именем args, который хранит значения типа string, то есть строки. В данном случае они нам пока не нужны, но в реальной программе это те параметры, которые передаются при запуске программы из консоли.
Внутри метода располагаются действия, которые этот метод выполняет. По умолчанию он содержит одно действие: Console.WriteLine("Hello World!"); - выводит в консоль строку "Hello World!".
Теперь мы можем запустить программу на выполнение с помощью клавиши F5 или с панели инструментов, нажав на зелёную стрелку. И если вы все сделали правильно, то при запуске приложения увидите заветную строку.
Теперь сделаем всё поинтересней — изменим код на следующий:
По сравнению с автоматически сгенерированным кодом были внесены несколько изменений. Теперь в методе Main первой строкой выводится приглашение к вводу.
Класс Console, метод которого мы вызываем, находится в пространстве имён System. Это пространство подключено в начале с помощью директивы using. Без подключения пространства имён System невозможно было бы использовать класс Console.
Однако нам необязательно подключать пространство имён. Мы можем даже удалить первую строку, но в этом случае мы тогда должны будем указать полный путь до используемого класса:
Во второй строке определяется строковая переменная name (тип string), в которую пользователь вводит информацию с консоли:
Мы обозначили, что помощью метода ReadLine() можем считать с консоли строку.
Затем введённое имя выводится на консоль:
Чтобы задать вывод значения переменной name в выводимой на консоль строке, применяются фигурные скобки <>. При выводе строки на консоль выражение будет заменяться на значение переменной name — введённое имя.
Знак доллара ($) обозначает, что внутри строки таким образом можно выводить значения переменных. Теперь протестируем проект, запустив его выполнение.
В первой статье рассмотрим, с чего начинается создание любого приложения в программе Visual Studio. Вы узнаете, что такое шаблоны, solution, чем отличает проект от решения и многое другое. Работа будет вестись, как вы уже поняли в программе Visual Studio, у меня установлена версия программы 2010, вы можете использовать любую другую версию.
Запустите программу Visual Studio.
Откроется главное окно программы. Как видно на рисунке, у меня появилось только верхнее меню и чёрный фон, больше ничего нет. У вас, возможно, появятся какие-то дополнительные окна, сразу скажу, что я их отключил специально, чтобы в дальнейшем показать, где и как их можно включить, а так же рассказать, для чего они вообще нужны.
Создание нового приложения, начинается с создания нового проекта. Для этого перейдите в меню File, затем выберите пункт New, появиться ещё одно подменю, в котором выберите пункт Project и нажмите на нём один раз левую кнопку мыши.
В результате откроется новое окно, в котором нам необходимо выбрать шаблон нашего будущего проекта.
Шаблоны программы Visual Studio
Если требуется создать приложение на другом языке, то выберите пункт Other Language, так же доступны и другие типы, например: Database, для работы с базами данных. Стоит отметить, что в разных версияx программы Visual Studio, многие пункты могут отсутствовать, особенно в Express версии.
После выбора типа проекта нажмите на значок плюс, в результате появятся дополнительные пункты меню.
Все шаблоны проектов разбиты и отсортированы по категориям. Для создания нашего приложения потребуется выбрать категорию Windows, в которой собраны шаблоны для создания настольных приложений, таких как консольное приложение, WPF, Windows Forms приложение и многие другие. После того, как Вы выбрали категорию, в центре окна появится список доступных шаблонов.
Найдите в списке шаблон Empty Project, на основе которого будет создан пустой проект.
Ниже на рисунке показано, как можно изменить версию платформы.
Name имя проекта.
Location указываем путь, где будут храниться файлы нашего проекта.
Solution name имя Solution.
Что такое Solution? Если говорить простым языком, то представьте себе, что solution (решение) это контейнер, в котором Вы можете хранить любое количество проектов.
Так как решение и проект, это разные вещи, то рекомендуется давать им разные имена, особенно если ваш solution содержит более одного проекта.
Так же не стоит указывать в качестве имени проекта или решения не связанный набор символов или одиночных букв, как например, у меня указано имя solution, так как со временем вы просто забудете, где и что у вас храниться и не сможете найти то, что вам нужно.
И последнее, что осталось сделать, это поставить галочку напротив строки Create directory for solution, если её нет. Для чего она нужна расскажу и покажу в следующей статье.
И так все поля заполнены, нажимаем OK.
Бесплатный курс по пентесту от Школы Кодебай
Запишись на вводный видеокурс по пентесту , состоящий из 24 уроков. Разные инструменты, тактики и навыки: сканирование сети, фаззинг, брутфорс, сниффинг, sql-инъекции, mimikatz, загрузка полезной нагрузки, эксплуатация разных уязвимостей, XSS, CSRF и немного Reverse-shell. Будет полезен для быстрой подготовки к CTF, а так же для прохождения курсов « SQL Injection Master » и « WAPT ».
Читайте также: