Пример создания простого приложения

в Windows Form С++/CLI


Чтобы создать новое приложение, выберите File–>New–>Project:

Выберите Windows Form Application, введите имя проекта и выберите Location вашего проекта, как на нижеследующем примере:

В результате получите проект с пустой формой:

Вы его уже можете скомпилировать и запустить. Для этого нужно нажать F5 или кнопку с зеленым треугольником.

Чтобы остановить запущенное приложение нажмите правый верхний крестик (как обычно) или перейдите в Visual studio и нажмите комбинацию клавиш Shift+F5.

Изменим имя приложения, которое выводится вверху. По умолчанию название Form1.

Для этого необходимо нажать кнопку Properties Window , найти поле с названием Text ввести новое название, как показано на примере:

Далее нажмите кнопку Toolbox .

Вы получите список объектов, которые можно расположить на форме. Выберите в списке объект Кнопка(Button) и перетащите его на форму.

Если запустить программу (F5) вы получите пустое приложение с кнопкой, на которую можно нажимать, но ничего происходить не будет.

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

Затем выберите Form1(Design). Если он закрыт, сделайте даблклик в Solution Exploler (обычно он слева) по Form1.h, как показано на рисунке:

Затем сделайте даблклик по кнопке button1.

В результате будет автоматически создана функция для обработки нажатия на кнопку, и вы перейдете в режим редактирования этой функции:


Добавьте в эту функцию нижеследующий код, выделенный красным:

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

Form1::Close();

}

Теперь запустите приложение и нажмите на кнопку. Теперь реакция на нажатие кнопки – это выход из программы.

Теперь добавьте на форму объект RichTextBox:

Этот объект обеспечивает ввод и отображение текста.

Добавьте еще одну кнопку на форму

Сделайте по ней даблклик и добавьте нижеследующий код в автоматически созданную функцию:

private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {

richTextBox1->Text += L"Привет ";

}

Запустите приложение. Теперь после каждого нажатия на кнопку button2 в richTextBox1 будет добавляться слово Привет:

Буква L перед “Привет ” – это макрос, трансформирующий обычную строку, состоящую из char в строку из расширенных символов wchar_t. Все объекты в Windows Form используют расширенные символы.

Теперь добавим меню в наше приложение.

Для этого выбираем в Toolbox и делаем даблклик по объекту menuStrip:

Выберите добавленный объект, в результате чего вы перейдете в режим редактирования меню:

Отредактируйте меню как показано на примере:

Сделайте даблклик по пункту меню «Выход» и добавьте Form1::Close(); ааналогично как это делали для button1:

private: System::Void выходToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e)

{

Form1::Close();

}

Запустите приложение, проверьте работоспособность меню.

Добавьте из Toolbox объекты OpenFileDialog и SaveFileDialog:

Эти объекты должны появиться под формой:

Теперь перейдите в меню и сделайте даблклик по пункту «Открыть»:

Для работы с файлами будем использовать стандартные средства языка С++.

В сгенерированную функцию «открытьToolStripMenuItem_Click» добавьте следующий код, выделенный красным:

private: System::Void открытьToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {

if (openFileDialog1->ShowDialog()!= System::Windows::Forms::DialogResult::OK) return;

std::string fileName = SystemStringToStdString(openFileDialog1->FileName);// преобразовании строки типа String^ в стандартную строку std::string

if (fileName.empty()) return;

std::ifstream in (fileName.c_str());

String^ systemEndStr = gcnew String(endStr);//Создаем символ конца строки

while (!in.eof()) // читаем информацию из файл стандартными средствами языка С++

{

std::string s;

getline(in, s);

String^ myInfoDisp = gcnew String(s.c_str());// преобразовании стандартной строки std::string в строку типа String^

richTextBox1->Text += (myInfoDisp+systemEndStr);

}

}

Также нужно добавить в начало этого файла (“ Form1.h ”) подключение библиотек и описание функции SystemStringToStdString:

#pragma once

#include <string>

#include <fstream>

#include <vector>

std::string SystemStringToStdString(System::String^ str)

{

char* pstr = static_cast<char*>(System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(str).ToPointer());

// char* stringPointer = (char*) Marshal::StringToHGlobalAnsi(the_string).ToPointer();

std::string resultString(pstr);

System::Runtime::InteropServices::Marshal::FreeHGlobal(System::IntPtr(pstr));

return resultString;

}

const char endStr[] = {13,10,0}; //конец строки для textBox1

………

Запустите приложение. Выполните Файл -> Открыть и выберите текстовый файл. Он должен отобразиться в окне:

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

В сгенерированную функцию «сохранитьToolStripMenuItem_Click» добавьте следующий код, выделенный красным:

private: System::Void сохранитьToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {

if (saveFileDialog1->ShowDialog()!= System::Windows::Forms::DialogResult::OK) return;

std::string fileName = SystemStringToStdString(saveFileDialog1->FileName);

if (fileName.empty()) return;

std::ofstream out (fileName.c_str());

std::string saveText = SystemStringToStdString(richTextBox1->Text);

out<<saveText;

}

Запустите приложение. Наберите некоторый текст в окно. Выполните Файл->Сохранить и введите в диалоговом окне имя создаваемого файла.


Напоследок изменим название кнопок:

Выберите на форме button1 и в Properties напротив поля «Text» введите «Закрыть»:

Аналогично изменим надпись на button2:

Создание простого приложения закончено.

Пример проекта, созданного таким образом, смотрите в архиве “ my_example_open_app.zip ”.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: