Как создать оконное приложение на с
Все программы условно можно подразделить на две категории: консольные и оконные.
Консольные программы — это наследие старых операционных систем типа MS DOS, работавших в текстовом режиме. Полной аналогии здесь нет, но создатели систем разработки пытаются сделать всё, чтобы было максимальное сходство. Для консольной программы операционная система или система разработки предоставляет специальное окно (обычно — черного цвета), в котором виден ход выполнения программы.
Оконное приложение всегда имеет своё собственное окно (обычно его называют главным окном приложения). Кроме главного окна в приложении могут использоваться множество других окон.
При разработке оконного приложения используются различные элементы управления: командные кнопки, окна ввода, надписи, меню и т.д.
Порядок создания оконного приложения
Создание оконного приложения начинается с создания проекта соответствующего типа. Порядок работы следующий:
Запускаем SharpDevelop, в Стартовой странице ( Start Page ) выбираем New solution ( Новое решение ). Если Стартовая страница закрыта, то выбираем пункт меню File/New/Solution.
В открывшемся окне диалога New Project ( Новый проект ) выбираем тип шаблона Windows Application ( Оконное приложение ), задаём имя проекта ( Name ), например: Primer_Windows1 , каталог ( Location ), в котором будет хранится программа и все необходимые для её работы файлы — пусть это C:\stud\2202 .
Нажимаем кнопку Create ( Создать ). Всё. Минимальное оконное приложение создано.
Что из себя представляет минимальное оконное приложение? В отличие от минимального консольного приложения оконное состоит уже из двух классов:
в файле Program.cs содержится текст класса Program , а в нём один единственный метод Main() ;
в файлах MainForm.cs и MainForm.Designer.cs находится текст класса MainForm , наследующий от класса Form . Это класс главного окна приложения.
Информация о классе главного окна программы MainForm , как сказано выше, хранится в двух файлах:
в файл MainForm.cs программист сам вносит тот код, который необходим для выполнения решаемой задачи;
файл MainForm.Designer.cs находится в безраздельном распоряжении специальной программы — Дизайнера кода . Текст этого файла лучше не открывать, чтобы ничего не испортить из того, что создал Дизайнер.
Когда в окне редактора открыт файл MainForm.cs , то в нижней части этого окна есть две вкладки:
Source — нажатие на эту вкладку открывает текст файла MainForm.cs , в котором можно набирать необходимый код программы;
Design — нажатие на эту вкладку открывает графическое представление главного окна: так называемую форму. На форме можно размещать различные элементы управления.
Рис.1. Открыта вкладка Source
Рис.2. Открыта вкладка Design
Когда открыта вкладка Design , то становится доступно окно Tools (на рис. 2 оно расположено слева) — это окно с панелями инструментов, т.е. готовых элементов управления, которые можно размещать на форме.
Также станет доступно окно Properties ( Свойства ). В этом окне в выпадающем списке вверху можно выбирать тот объект на форме, который нужен, и изменять его свойства на этапе проектирования внешнего вида программы.
Порядок разработки оконного приложения
Разработка оконного приложения состоит из двух основных этапов:
проектирование внешнего вида приложения;
Рассмотрим оба этапа на простом примере.
Пример 1 . Даны основание a и высота h треугольника. Вычислить его площадь s .
Задача сводится к вводу исходных данных ( a и h ), вычислению площади и выводу полученного результата.
Вначале на форме разместим два объекта типа TextBox , предназначенные для ввода данных ( TextBox – простой текстовый редактор, используется для ввода или вывода данных). Объекты по-умолчанию получат имена textBox1 и textBox2 . Первый будем использовать для ввода a , второй — для ввода h .
Слева от текстовых редакторов расположим два объекта типа Label ( Label — надпись, используется для вывода каких либо поясняющих текстов). Их имена будут label1 и label2 . В свойствах Text этих объектов (находим их в окне Properties ) напишем строки « a= » и « h= », чтобы было понятно, что будет вводится в текстовых редакторах.
Ниже расположим ещё один объект типа Label ( label3 ), напишем в его свойстве Text строку « s=? ». Этот объект будем использовать для вывода результатов вычисления, т.е. площади треугольника.
Ещё ниже разместим две кнопки — объекты типа Button . Они получат имена button1 и button 2 . В свойстве Text для этих кнопок напишем строки « Вычислить » и « Выход ». Основное назначение объектов этого типа — выполнение каких-либо действий по щелчку. Т.е. пользователь программы щёлкает мышью по кнопке, и программа в ответ выполняет какое-то действие. Но чтобы это произошло, необходимо написать обработчики событий. Так в нашем случае первая кнопка предназначена для вычисления площади, а вторая — для завершения работы программы.
В свойстве Text самой формы ( MainForm ) напишем что-нибудь соответствующее решаемой задачи, например: « Площадь ».
Всё, этап проектирования внешнего вида программы закончен. Вот так будет выглядеть наша форма:
Рис. 3. Форма
Если сейчас запустить программу на исполнение, то можно будет вводит данные в поля ввода, щёлкать по кнопкам, но программа ни на что не будет реагировать.
Приступаем ко второй части разработки программы — написанию обработчиков событий.
Обработчик событий — это метод особого вида со стандартным перечнем параметров. Используется для реакции программы на те или иные действия пользователя. Обработчик не вызывается непосредственно в тексте программы. Он вызывается средой выполнения. Каждый обработчик связан с каким-либо объектом.
Создать обработчики событий для наших кнопок очень просто. Если открыта вкладка Design , то выполните двойной щелчок мышью по каждой из кнопок. Сразу же после двойного щелчка мыши по первой кнопке (« Вычислить ») открывается вкладка Source и в ней можно увидеть добавленный Дизайнером код заготовки метода Button1Click() . Снова перейдите во вкладку Design и выполните двойной щелчок по второй кнопке (« Выход »). Дизайнер добавит ещё один обработчик — метод Button2Click() .
Внутри полученных таким способом заготовок методов (обработчиков событий) напишем необходимый код. Вот текст файла MainForm (для краткости убраны все комментарии, которые были добавлены системой разработки):
в этом пошаговом руководстве показано, как создать традиционное Windows классическое приложение в Visual Studio. в примере приложения, которое вы создадите, будет использоваться Windows API для вывода "Hello, Windows desktop!". "Hello, World!". Код, созданный в этом пошаговом руководстве, можно использовать в качестве шаблона для создания других классических приложений Windows.
Для краткости в тексте пропущены некоторые операторы кода. В разделе Построение кода в конце документа показан полный код.
Предварительные требования
Компьютер под управлением Microsoft Windows 7 или более поздних версий. Для обеспечения оптимальной среды разработки рекомендуется использовать Windows 10.
Копия Visual Studio. Сведения о скачивании и установке Visual Studio см. в этой статье. Когда вы запускаете установщик, убедитесь, что установлена рабочая нагрузка Разработка классических приложений на C++ . Не беспокойтесь, если вы не установили эту рабочую нагрузку при установке Visual Studio. Вы можете снова запустить установщик и установить ее сейчас.
Базовые значения об использовании интегрированной среды разработки Visual Studio. Если вы уже использовали классические приложения для Windows, вы, вероятно, справитесь. Общие сведения см. в обзоре возможностей интегрированной среды разработки Visual Studio.
Основные навыки владения языком C++. Не волнуйтесь, мы не будем делать ничего сложного.
создание проекта Windows классических приложений
чтобы создать первый проект Windows desktop, выполните следующие действия. в процессе работы вы вводите код рабочего Windows приложения. Чтобы ознакомиться с документацией по предпочтительной версии Visual Studio, используйте селектор Версия. Он находится в верхней части оглавления на этой странице.
создание проекта Windows desktop в Visual Studio 2019
В главном меню выберите Файл > Создать > Проект, чтобы открыть диалоговое окно Создание проекта.
в верхней части диалогового окна задайте для параметра язык значение C++, задайте для параметра платформа значение Windows и задайте для параметра Project тип значение рабочий стол.
в отфильтрованном списке типов проектов выберите мастер рабочего стола Windows , а затем нажмите кнопку далее. На следующей странице введите имя проекта, например десктопапп.
В Обозреватель решений щелкните правой кнопкой мыши проект Десктопапп , выберите Добавить, а затем выберите новый элемент.
Теперь проект создан и исходный файл открыт в редакторе. Чтобы продолжить, перейдите к созданию кода.
создание проекта Windows desktop в Visual Studio 2017
В меню Файл выберите команду Создать, а затем пункт Проект.
в левой области диалогового окна создание Project разверните узел установленные > Visual C++ и выберите пункт Windows рабочий стол. в средней области выберите мастер рабочего стола Windows.
В Обозреватель решений щелкните правой кнопкой мыши проект Десктопапп , выберите Добавить, а затем выберите новый элемент.
Теперь проект создан и исходный файл открыт в редакторе. Чтобы продолжить, перейдите к созданию кода.
создание проекта Windows desktop в Visual Studio 2015
В меню Файл выберите команду Создать, а затем пункт Проект.
в левой области диалогового окна создание Project разверните узел установленные > шаблоны > Visual C++, а затем выберите пункт Win32. В средней области выберите шаблон Проект Win32.
На странице Обзор мастера приложений Win32 нажмите кнопку Далее.
на странице Параметры приложений в разделе тип приложения выберите Windows приложение. В разделе Дополнительные параметры снимите флажок предкомпилированный заголовок, а затем выберите пустой проект. Чтобы создать проект, нажмите кнопку Готово.
В Обозреватель решений щелкните правой кнопкой мыши проект десктопапп, выберите Добавить, а затем выберите новый элемент.
Теперь проект создан и исходный файл открыт в редакторе.
Создание кода
далее вы узнаете, как создать код для Windows классического приложения в Visual Studio.
Запуск классического приложения Windows
точно так же, как у каждого приложения C и C++ должна быть main функция в качестве начальной точки, каждое Windows классическое приложение должно иметь WinMain функцию. WinMain имеет следующий синтаксис:
Сведения о параметрах и возвращаемом значении этой функции см. в разделе WinMain Entry Point.
Что такое дополнительные слова, такие как, или, или WINAPI CALLBACK HINSTANCE _In_ ? традиционный API Windows использует определения типов и макросов препроцессора, чтобы изменялись некоторые сведения о типах и коде, зависящем от платформы, такие как соглашения о вызовах, __declspec объявления и директивы pragma компилятора. в Visual Studio можно использовать функцию " быстрые сведения " IntelliSense, чтобы увидеть, что определяются этими определениями и макросами. Наведите указатель мыши на интересующую слово или выберите его и нажмите клавиши CTRL + K, CTRL + I для небольшого всплывающего окна, содержащего определение. Дополнительные сведения см. в разделе Using IntelliSense. Параметры и возвращаемые типы часто используют аннотации SAL , чтобы помочь в перехвате ошибок программирования. Дополнительные сведения см. в разделе Использование аннотаций SAL для сокращения числа дефектов кода C/C++.
для Windows настольных приложений требуется <> Windows. h. <в файле Tchar. h> определен TCHAR макрос, который в конечном итоге разрешается в, wchar_t Если в проекте ОПРЕДЕЛЕН символ Юникода, в противном случае — значение char . Если вы всегда создаете Юникод с включенным параметром UNICODE, то не нужно использовать TCHAR и может быть просто использоваться wchar_t напрямую.
наряду с WinMain функцией, каждое Windows классическое приложение также должно иметь функцию window-procedure. Эта функция обычно называется WndProc , но вы можете назвать ее по своему усмотрению. WndProc имеет следующий синтаксис:
Дополнительные сведения см. в разделе Процедуры окна.
Добавление функциональных возможностей в функцию WinMain
В WinMain функции вы заполняете структуру типа вндклассекс. Структура содержит сведения о окне: значок приложения, цвет фона окна, имя, отображаемое в строке заголовка, помимо прочего. Важно, что он содержит указатель на функцию окна. В приведенном ниже примере показана типичная структура WNDCLASSEX .
Дополнительные сведения о полях приведенной выше структуры см. в разделе вндклассекс.
Теперь можно создать окно. Используйте функцию CreateWindowEx .
Эта функция возвращает объект HWND , который является обработчиком окна. маркер похож на указатель, который Windows использует для наблюдения за открытыми окнами. Дополнительные сведения см. в разделе Типы данных Windows.
на этом этапе окно было создано, но нам по-прежнему нужно сообщить Windows, чтобы сделать его видимым. Вот что делает этот код:
На этом этапе функция WinMain должна напоминать приведенный ниже код.
Добавление функциональных возможностей в функцию WndProc
HDC в коде — это обработчик контекста устройства, который используется для рисования в клиентской области окна. Используйте BeginPaint функции и EndPaint для подготовки и завершения рисования в клиентской области. BeginPaint Возвращает маркер контекста устройства отображения, используемый для рисования в клиентской области. EndPaint завершает запрос на рисование и освобождает контекст устройства.
Сборка кода
Как обещано, вот полный код для рабочего приложения.
Сборка примера
Удалите код, введенный в хелловиндовсдесктоп. cpp в редакторе. Скопируйте этот пример кода и вставьте его в хелловиндовсдесктоп. cpp:
В меню Построение выберите Построить решение. Результаты компиляции должны появиться в окне вывод в Visual Studio.
Чтобы запустить приложение, нажмите клавишу F5. окно, содержащее текст "Hello, Windows desktop!" должно отображаться в левом верхнем углу экрана.
Поздравляем! вы выполнили это пошаговое руководство и создали традиционное Windows классическое приложение.
В диалоговом окне Новый проект выберите Приложение Windows Forms».
Каждый раз, когда вы создаете приложение Windows, Visual Studio будет отображать пустую форму по умолчанию, на которую вы можете перетащить элементы управления на основную форму приложения и настроить их размер и положение.
Если вы хотите установить какие-либо свойства формы, вы можете использовать окно свойств Visual Studio, чтобы изменить их. Есливы не видите окно Свойств, в меню ВИД щелкните Окно свойств. В этом окне перечислены свойства выбранной в данный момент формы Windows или элемента управления, и здесь вы можете изменить существующие значения.
Далее на вкладке ВИД открываем панель элементов. Находим там виджет Button и перетаскиваем его на форму. Дважды щелкаем по новому элементу и открываем окно с кодом кнопки.
private void button1_Click(object sender, EventArgs e)
// вводим следующий код
MessageBox.Show("Привет Мир");
При нажатии на кнопку на экране должно появиться приветствие. Результат:
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Она выглядит вот так:
Комментарии ( 2 ):
Здравствуйте, Михаил! А почему в примере здесь используется 2012 visual studio, а не последняя его версия или 2019? Буду рад, если ответите.
Добрый день. В примере используется бесплатная, учебная версия программы. Так как это учебный проект, то не принципиально какая версия программы. Тем более что, в части создания проекта все версии схожи между собой.
Шаг 0. А вдруг получится сразу?
В настоящее время IDE, поддерживающих Windows forms, не так много — буквально одна только Visual Studio, более известная как просто "студия". Поэтому будем рассматривать создание и решение проблем именно в этой среде разработки. Первым шагом запустим студию, начнём создавать новый проект и попытаемся найти Windows forms проект для C++:
Если у вас более старая версия Visual Studio, то интерфейс будет выглядеть немного иначе, однако данная функциональность будет той же. Также не исключено, что у Вас может быть данный тип проекта для C++ (на некоторых версиях формы для C++ были доступны сразу после установки IDE). Если же у Вас, как и у нас поиск не дал нужных результатов, то переходим к следующему шагу.
Шаг 1. Создание CLR проекта
Поскольку непосредственно Windows Forms проекта у нас не оказалось, мы обхитрим студию и создадим пустой CLR проект на С++. Для этого в том же окне поиска необходимо найти и выбрать Новый CLR проект , ввести имя (если нужно, то поменять директорию расположения проекта) и немного подождать, пока студия сделает свою работу.
В результате Visual Stido создаст новый C++ CLR проект, который будет выглядеть примерно так:
Шаг 2. Добавить форму
Чтобы сделать CLR проект проектом Windows Forms, нужно просто добавить в него форму. Для этого в верхнем меню нужно выбрать Проект - Добавить новый элемент и в появившемся окне выбрать категорию Visual C++ - UI и затем выбрать Форма Windows Forms .
После данной операции нас ждёт разочарование в виде ошибки Исключение из HRESULT: 0x8000000A :
Шаг 3. Исправляем появившуюся ошибку
Данная ошибка появляется из-за того, что для создания окна формы приложению необходима основная программа, создающая форму и переключающая управление на неё, однако после добавления новой формы файл Form1.cpp предсказуемо создаётся пустым. Поэтому необходимо добавить основную программу в файл с формой:
В результате код файла Form1.cpp будет выглядеть следующим образом:
Шаг 4. Переоткрыть проект
Всё, что теперь осталось сделать — это закрыть текущее решение, а затем открыть его снова. Для этого можно закрыть саму студию, а можно выбрать в верхнем меню Файл - Закрыть решение , после чего в появившемся окне выбрать только что созданный проект и открыть его заново.
Благодаря добавленному коду основной программы, студия сможет создать форму и на экране появится изображение формы, на которую можно будет добавлять компоненты, задавать их свойства, а также свойства самой формы.
Выпускник МГУ им. М.В. Ломоносова
Programforyou — это сообщество, в котором Вы можете подтянуть свои знания по программированию, узнать, как эффективно решать те или иные задачи, а также воспользоваться нашими онлайн сервисами.
Читайте также: