Создание оконных приложений в .NET
Средства разработки GUI
-
Редакторы ресурсов. Механизм ресурсов приложений Microsoft Windows был разработан для того, чтобы отделить элементы пользовательского интерфейса (диалоговые окна, кнопки, списки и т. д.) от программного кода.
-
MFC - библиотека классов Microsoft Foundation Classes в Microsoft Visual C++ может выступать в качестве системы визуального проектирования приложений.
-
RAD - средства ускоренной разработки приложений (Rapidly Application Development)
Принципы работы приложений Windows
-
Разновидности программ:
-
Консольные и программы с графическим интерфейсом
-
Однопоточные и многопоточные программы
-
Синхронное и асинхронное выполнение программ
Сообщения (События)
Сообщения создают драйверы периферийных устройств ввода и вывода, таких, как клавиатура, мышь или таймер. Драйверы создают сообщения при поступлении аппаратных прерываний.
Сообщения попадают в системную очередь сообщений Microsoft Windows, а далее распределяются в очереди сообщений отдельных приложений.
Обнаружив сообщение, приложение с помощью специальной функции из программного интерфейса Windows (Win32 API) распределяет его нужному программному модулю, называемому функцией окна.
Фокус ввода (input focus) - это атрибут, который в любой момент времени может относиться только к одному окну.
Если окно имеет фокус ввода, все сообщения распределяются сначала в очередь сообщений приложения, создавшего окно, а затем - функции окна, владеющего фокусом ввода.
Процесс обработки сообщений

Windows Forms


Создание главного окна

using System;
using System.Windows.Forms;
namespace MyWindowsApp
{
public class MainWindow : Form
{
//Выполнение приложения
//и идентификация главного окна
static void Main(string[] args)
{
Application.Run(new MainWindow());
}
}
}
Набрать в командной строке csc /target:winexe *.cs
Класс Application
-
Предоставляет статические методы и свойства для управления приложением, в том числе:
-
методы для запуска и остановки приложения;
-
методы для запуска и остановки потоков в рамках приложения;
-
методы для обработки сообщений Windows;
-
свойства для получения сведений о приложении.


Иерархия классов в System.Windows.Forms
Пространство имен System.Windows.Forms

Возможности класса Control
-
Класс System.Windows.Forms.Control задает общее поведение, ожидаемое от любого GUI-типа. Базовые члены класса Control позволяют:
-
указать размер и позицию элемента управления,
-
выполнить захват событий клавиатуры и мыши,
-
получить и установить фокус ввода,
-
задать и изменить видимость членов
-
и т.д.
Свойства класса Control.

События класса Control.
-
События, учитывающие состояние клавиатуры: KeyPress, KeyUp, KeyDown
-
События, учитывающие состояние мыши: Click, DoubleClick, MouseEnter, MouseDown, MouseUp, MouseMove
-
Событие, позволяющее взаимодействовать с GDI: Paint
Методы класса Control.

Класс Form
-
Объект класса Form поддерживает механизмы управления, реализованные на основе обмена сообщениями Windows.
-
Класс формы содержит объявление множества событий, для которых на основе стандартного интерфейса (сигнатуры) могут быть подключены и реализованы функции обработки событий.
-
Этот класс можно использовать как основу для создания различных вариантов окон:
-
стандартных;
-
инструментальных;
-
всплывающих;
-
borderless;
-
диалоговых.
Методы класса Form обеспечивают управление формой:
ShowDialog - обеспечивает представление формы как модального диалога;
Show - показывает форму как немодальный диалог;
SetDesktopLocation - позиционирует форму на поверхности Рабочего стола;
Activate – активизирует форму
Hide – скрывает форму
Close – закрывает форму

Контейнеры
-
Container controls – место для группировки элементов пользовательского интерфейса. Контейнер может управлять доступом к размещаемым на его поверхности элементам управления.
-
К числу контейнеров относятся:
-
Form
-
Panel - содержащий другие элементы управления. Может быть использован для группировки множества элементов управления.
-
GroupBox - предполагается для размещения радиокнопок и прочих переключателей. Рисует рамочку вокруг элементов управления, группируемым по какому-либо признаку.
-
TabControl - содержит объекты TabPage, которые могут добавляться через