Иерархия Windows Forms (Формы Windows)
К сожалению, конструктор форм (Forms Designer) не поддерживается в C++. Тем не менее, вы можете использовать конструктор форм (Forms Designer) в С#, и потом перенести полученный с помощью С# код графического интерфейса пользователя в программу на C++. Для переноса графического интерфейса пользователя в программу на C++ необходимы дополнительные усилия, и, в большинстве случаев, такой перенос особой пользы не дает. Как правило, C++ не используют для разработки пользовательских графических интерфейсов, вместо этого применяется подход смешения языков, в котором для создания пользовательского интерфейса используется С#, а в других аспектах разработки проекта из разных соображений используется C++.
Поскольку вам, скорее всего, придется часто создавать графический интерфейс пользователя для многих приложений, в этой паве мы преследуем две цели. Во-первых, мы хотим научить вас совместно использовать код на С# и C++. Даже если вы в основном программируете на C++, стоит ознакомиться с С# и конструктором форм (Forms Designer), – у вас появится возможность использовать те мощные инструментальные программные средства, которые не поддерживаются в C++. Во-вторых, мы приведем в пример один из немногих случаев, когда перенос кода графического интерфейса пользователя из С# в программу на C++ является целесообразным. В главе представлено несколько пар примеров кода графических пользовательских интерфейсов до и после переноса.
Ключевым средством взаимодействия пользователя с компьютером является графический пользовательский интерфейс (Graphical User Interface, GUI). Из этой главы вы узнаете, как создавать графический пользовательский интерфейс с помощью классов Windows Forms (Формы Windows), которые находятся в NET Framework. На практике программирование Windows-приложений предполагает экстенсивное использование различных инструментальных средств и мастеров, которые намного упрощают этот процесс. Однако все указанные средства автоматизации заслоняют то, что лежит в основе создания графического пользовательского интерфейса. Поэтому сначала мы рассмотрим основы создания графических пользовательских интерфейсов. Иными словами, мы научимся создавать простые приложения Windows с самого начала, пользуясь только комплексом инструментальных средств разработки программ NET Framework SDK.
Это значит, что вначале мы будем создавать простые приложения Windows без применения каких-либо специальных сервисных программ. Будут рассмотрены основы рисования с помощью Windows Forms (Формы Windows) с применением шрифтов и кистей, а также необходимые обработчики событий. Мы объясним принципы обработки событий в Windows Forms (Формы Windows) и реализуем обработчики событий мыши. С помощью Windows Forms (Формы Windows) мы также реализуем меню и соответствующие обработчики событий.
Кроме того, мы рассмотрим управляющие элементы, а после этого изучим среду Visual Studio .NET, посредством которой можно без труда создать простой графический пользовательский интерфейс на С#. С помощью конструктора форм (Forms Designer) добавим в форму управляющие элементы, создадим меню, добавим обработчики событий и другие полезные функциональные возможности. При желании полученный в результате проект на С# можно потом перенести на C++. В заключение будут рассмотрены диалоговые окна и такой элемент управления, как список.
Windows Forms (Формы Windows) – это та часть каркаса .NET Framework, которая поддерживает создание приложений со стандартным графическим пользовательским интерфейсом (GUI) на платформе Windows. Среди классов Windows Forms (Формы Windows) есть обширный набор классов для создания сложных графических пользовательских интерфейсов. Эти классы можно использовать в приложениях, написанных на любом языке .NET.
Как правило, ваше приложение будет содержать главное окно, которое реализовано с помощью некоторого класса MyForm, производного от класса Form (Форма). На рис 6.1 изображено, какое место ваш класс MyForm занимает в иерархии классов Windows Forms (Формы Windows).
Рис. 6.1. Упрощенная схема иерархии классов Windows Forms (Формы Windows)