Mfc application что это

от admin

Что такое MFC?

Как гласит Википедия Microsoft Foundation Classes (MFC) — библиотека на языке C++, разработанная Microsoft и призванная облегчить разработку GUI-приложений для Microsoft Windows путем использования богатого набора библиотечных классов.

В Microsoft Visual С++ можно создавать различные типы проектов, это проекты после создания можно компилировать и запускать на выполнение.

  • MFC Application (.exe);
  • MFC DLL (.dll);
  • MFC ActiveX Control;

На данном сайте будет рассматриваться только первый тип проекта — MFC Application .

  • Single Document;
  • Multiple Documents;
  • Dialog Based;

Наибольший интерес представляют Dialog Based приложения, т.е. приложения в которые можно добавлять кнопки, текстовые поля, списки и т.д. Именно поэтому будем рассматривать только их.

MFC В 2022

Как бы мне не хотелось ответить на этот вопрос. Но ответа я не знаю. На рабочем проекте была задача написать редактор на MFC. Да, да. На MFC. Для тех, кто не знает, MFC — графическая библиотека от Microsoft, на которой стояли Microsoft Office и Visual Studio до 2010 года и выглядит примерно вот так:

Документация

Хоть и компания Microsoft любит делать подробную документацию для своих творений, но с MFC ситуация оказалась иная. Хоть он и имеет в районе 100 страниц на msdn (я знаю, что сайт переехал, но привычки не меняются), но это только на первый взгляд. Как только вам приходится делать что-то серьёзное, касаемо самих контролов, можете о ней забыть. Придётся выкачивать символы и исходный код данной библиотеки и разбираться в отладчике, вникая в аспекты UI библиотеки построенной на событиях. Ладно, у меня слишком много накипело и вводную я могу писать вечно, так что перейдём к сути.

Убийца #1 — Visual Manager

Если кто-то заходил дальше диалоговых окон, то знает что есть режимы SDI и MDI, которые представляют собой полноценное окно с табами(и без них). И их визуализацией занимается как раз таки Visual Manager (нет), у которого даже есть множество тем, начиная с WinXP и заканчивая Windows 7. (+VS и MSOffice)

На самом деле VisualManager выполняет весьма скудную роль в этом деле. Он контролирует Ribbon, PropertyGrid, MDI Tabs, Toolbar (который CMFCToolbar. Их там несколько, ребят), Header и Caption Bar. Но если же вы хотите сделать нечто следующее:

То вам придётся знакомится с событиями WM_PAINT, WM_CLRCTL (а ещё и иногда с *_NC_ аналогами этих событий) и перегружать все наши любимые кнопки, текстбоксы и статики. Помимо этого, добавлять в DocablePane функции, которые будут указывать для DC цвет текста и фона для CTreeCtrl.

Убийца #2 — PropertyGrid

Думаю, всем известно, что пропы это весьма обширная UI часть и везде нам не нравится их реализация. Помните, я говорил, что Visual Manager отвечает за их отрисовку? В данном случае, лучше бы он этого не делал. Почему? Представьте что вам нужен кастомный проп, в котором должна быть кнопка, или несколько. Но. У пропа всего 1 hwnd, что не позволяет вам быстрой перегрузкой докинуть кнопку в его содержимое. И тут уже идёт магия с созданием алгоритмов просчёта позиции.

Ситуация 2: Диалоговые окна.
К несчастью, при использовании CMFCPropertyGridCtrl в диалоговых окнах, можно встретить неправильный width:

Данная проблема решается перегрузкой класса следующим образом:

Честно говоря, быстрее выйдет написать свой PropertyGrid, если Вам придётся часто с ним работать. Т.к. если не брать в расчёт предыдущие аспекты, сам по себе он вызывает очень громоздкий код, который придётся обвешивать get/set на каждый чих. За два вечера я смог написать базовый проп под свои нужды, который работает напрямую с передаваемой переменной и имеет тот же функционал:

Убийца #3 — RibbonBar

Честно говоря, Ribbon в MFC весьма прогрессивнее в плане работы, чем все остальные компоненты. Даже его внутренность построенная на xml, в отличии от тех же диалоговых окон. Но, я так думал, пока не пришлось добавлять на него кастомный элемент. И как было бы не смешно, им оказался RadioBtn. Да, забавный факт, но там нет понятия всеми любимых радио-кнопок.

Шаг 1 — Новый класс для Ribbon

Для начала надо объяснить MFC, что мы будем использовать кастомый конструктор для Ribbon. Перегружаем функцию LoadFromResource

Шаг 2 — Конструктор

А тут уже объясняем, в чём не прав стандартный конструктор MFC

strstr(info.m_strKeys, «RB») — Это флаг в визуальном редакторе, благодаря которому мы можем впихнуть кучу UserInfo

Хочется сказать большое спасибо людям с CodeProject и StackOverflow за огромное количество подсказок при глубокой работе с данным UI API.

Большую часть кода по компонентам MFC я перевёл в общий стандарт и опубликовал по ссылке ниже. Скорее всего, данный репозиторий будет со временем пополняться. Надеюсь, кому-то данная библиотека решений сократит пару десятков часов.

МФЦ – Обзор

Библиотека Microsoft Foundation Class (MFC) предоставляет набор функций, констант, типов данных и классов для упрощения создания приложений для операционных систем Microsoft Windows. В этом руководстве вы узнаете все о том, как запускать и создавать приложения на базе Windows с помощью MFC.

Предпосылки

Мы предположили, что вы знаете следующее –

  • Немного о программировании для Windows.
  • Основы программирования на C ++.
  • Понимать основы объектно-ориентированного программирования.

Что такое МФЦ?

Microsoft Foundation Class Library (MFC) – это «среда приложения» для программирования в Microsoft Windows. MFC предоставляет большую часть кода, который требуется для следующего –

  • Управление Windows.
  • Меню и диалоговые окна.
  • Выполнение основного ввода / вывода.
  • Хранение коллекций объектов данных и т. Д.

Вы можете легко расширить или переопределить базовую функциональность инфраструктуры MFC в своих приложениях C ++, добавив свой специфичный для приложения код в среду MFC.

MFC Framework

Инфраструктура MFC предоставляет набор повторно используемых классов, предназначенных для упрощения программирования Windows.

MFC предоставляет классы для многих базовых объектов, таких как строки, файлы и коллекции, которые используются в повседневном программировании.

Он также предоставляет классы для общих API-интерфейсов Windows и структур данных, таких как окна, элементы управления и контексты устройства.

Каркас также обеспечивает прочную основу для более продвинутых функций, таких как ActiveX и обработка представления документов.

Кроме того, MFC предоставляет среду приложения, включая классы, составляющие иерархию архитектуры приложения.

Инфраструктура MFC предоставляет набор повторно используемых классов, предназначенных для упрощения программирования Windows.

MFC предоставляет классы для многих базовых объектов, таких как строки, файлы и коллекции, которые используются в повседневном программировании.

Он также предоставляет классы для общих API-интерфейсов Windows и структур данных, таких как окна, элементы управления и контексты устройства.

Каркас также обеспечивает прочную основу для более продвинутых функций, таких как ActiveX и обработка представления документов.

Кроме того, MFC предоставляет среду приложения, включая классы, составляющие иерархию архитектуры приложения.

Почему МФЦ?

Платформа MFC – это мощный подход, который позволяет вам опираться на работу опытных программистов для Windows. Структура MFC имеет следующие преимущества.

Это сокращает время разработки.

Это делает код более переносимым.

Он также обеспечивает огромную поддержку, не уменьшая свободу и гибкость программирования.

Он обеспечивает легкий доступ к «сложным для программирования» элементам и технологиям пользовательского интерфейса.

MFC упрощает программирование базы данных с помощью объектов доступа к данным (DAO) и Open Database Connectivity (ODBC), а также сетевое программирование с помощью сокетов Windows.

Это сокращает время разработки.

Это делает код более переносимым.

Он также обеспечивает огромную поддержку, не уменьшая свободу и гибкость программирования.

Он обеспечивает легкий доступ к «сложным для программирования» элементам и технологиям пользовательского интерфейса.

MFC упрощает программирование базы данных с помощью объектов доступа к данным (DAO) и Open Database Connectivity (ODBC), а также сетевое программирование с помощью сокетов Windows.

MFC – Настройка среды

Microsoft Visual C ++ – это среда программирования, используемая для создания приложений для операционных систем Microsoft Windows. Для использования инфраструктуры MFC в вашем приложении C ++ вы должны установить Microsoft Visual C ++ или Microsoft Visual Studio. Microsoft Visual Studio также содержит среду Microsoft Visual C ++.

Microsoft предоставляет бесплатную версию Visual Studio, которая также содержит SQL Server, и ее можно скачать с https://www.visualstudio.com/en-us/downloads/downloadvisual- studio-vs.aspx .

Ниже приведены шаги установки.

Шаг 1. После загрузки Visual Studio запустите установщик. Появится следующее диалоговое окно.

Visual Studio

Шаг 2 – Нажмите «Установить», чтобы начать процесс установки.

Visual Studio Установка

Шаг 3. После успешной установки Visual Studio вы увидите следующее диалоговое окно.

Visual Studio установлена

Шаг 4 – Закройте это диалоговое окно и перезагрузите компьютер, если это необходимо.

Шаг 5 – Откройте Visual Studio из меню «Пуск», которое откроет следующее диалоговое окно. Это займет некоторое время для подготовки, начиная с первого раза.

Visual Studio Подготовка

Шаг 6 – Далее вы увидите главное окно Visual Studio.

Visual Studio Главное окно

Шаг 7 – Теперь вы готовы запустить приложение.

MFC – VC ++ Projects

В этой главе мы рассмотрим различные типы проектов VC ++. Visual Studio включает несколько видов шаблонов проектов Visual C ++. Эти шаблоны помогают создавать базовую структуру программы, меню, панели инструментов, значки, ссылки и включают в себя операторы, соответствующие типу проекта, который вы хотите создать. Ниже приведены некоторые характерные особенности шаблонов.

Он предоставляет мастера для многих из этих шаблонов проектов и помогает настраивать проекты по мере их создания.

Как только проект создан, вы можете создать и запустить приложение.

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

Легче изменить предоставленные файлы проекта и структуру, чем создать их с нуля.

Он предоставляет мастера для многих из этих шаблонов проектов и помогает настраивать проекты по мере их создания.

Как только проект создан, вы можете создать и запустить приложение.

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

Легче изменить предоставленные файлы проекта и структуру, чем создать их с нуля.

В MFC вы можете использовать следующие шаблоны проектов.

Приложение MFC

Приложение MFC – это исполняемое приложение для Windows, основанное на библиотеке Microsoft Foundation Class (MFC). Самый простой способ создать приложение MFC – использовать мастер приложений MFC.

MFC ActiveX Control

Управляющие программы ActiveX – это модульные программы, разработанные для предоставления определенного типа функциональности родительскому приложению. Например, вы можете создать элемент управления, например кнопку для использования в диалоговом окне, на панели инструментов или на веб-странице.

MFC DLL – это двоичный файл, который действует как общая библиотека функций, которые могут одновременно использоваться несколькими приложениями. Самый простой способ создать проект MFC DLL – использовать мастер MFC DLL.

Приложение MFC

Приложение MFC – это исполняемое приложение для Windows, основанное на библиотеке Microsoft Foundation Class (MFC). Самый простой способ создать приложение MFC – использовать мастер приложений MFC.

MFC ActiveX Control

Управляющие программы ActiveX – это модульные программы, разработанные для предоставления определенного типа функциональности родительскому приложению. Например, вы можете создать элемент управления, например кнопку для использования в диалоговом окне, на панели инструментов или на веб-странице.

MFC DLL – это двоичный файл, который действует как общая библиотека функций, которые могут одновременно использоваться несколькими приложениями. Самый простой способ создать проект MFC DLL – использовать мастер MFC DLL.

Ниже приведены некоторые общие шаблоны, которые также можно использовать для создания приложения MFC.

Пустой проект

Проекты – это логические контейнеры для всего, что нужно для создания вашего приложения. Затем вы можете добавить больше новых или существующих проектов в решение, если это необходимо.

Custom Wizard

Visual C ++ Custom Wizard – это инструмент, который нужно использовать, когда вам нужно создать новый настраиваемый мастер. Самый простой способ создать настраиваемый мастер – использовать настраиваемый мастер.

Пустой проект

Проекты – это логические контейнеры для всего, что нужно для создания вашего приложения. Затем вы можете добавить больше новых или существующих проектов в решение, если это необходимо.

Custom Wizard

Visual C ++ Custom Wizard – это инструмент, который нужно использовать, когда вам нужно создать новый настраиваемый мастер. Самый простой способ создать настраиваемый мастер – использовать настраиваемый мастер.

MFC – Начало работы

В этой главе мы рассмотрим работающий пример MFC. Чтобы создать приложение MFC, вы можете использовать мастера для настройки ваших проектов. Вы также можете создать приложение с нуля.

Создать проект с использованием шаблонов проектов

Ниже приведены шаги по созданию проекта с использованием шаблонов проектов, доступных в Visual Studio.

Шаг 1 – Откройте Visual Studio и выберите пункт меню Файл → Создать → Проект.

Шаг 2 – Теперь вы можете видеть, что диалоговое окно New Project открыто.

проект

Шаг 3 – На левой панели выберите Шаблоны → Visual C ++ → MFC

Шаг 4 – В средней панели выберите Приложение MFC.

Шаг 5 – Введите имя проекта «MFCDemo» в поле «Имя» и нажмите «ОК» для продолжения. Вы увидите следующий диалог.

Применение MFCDemo

Шаг 6 – Нажмите Далее.

Тип приложения MFC

Шаг 7 – Выберите параметры, которые отображаются в диалоговом окне, указанном выше, и нажмите «Далее».

Параметры приложения MFC

Шаг 8 – Снимите все флажки и нажмите кнопку Готово.

Теперь вы можете видеть, что мастер MFC создает это диалоговое окно и файлы проекта по умолчанию.

Мастер MFC

Шаг 9 – Запустите это приложение, вы увидите следующий вывод.

Результат применения MFC

Создать проект с нуля

Вы также можете создать приложение MFC с нуля. Чтобы создать приложение MFC, вам необходимо выполнить следующие шаги.

Шаг 1 – Откройте Visual Studio и выберите пункт меню Файл → Создать → Проект.

Шаг 2 – Теперь вы можете увидеть диалоговое окно New Project.

Создать Скретч

Шаг 3 – На левой панели выберите Шаблоны → Visual C ++ → Общие.

Шаг 4 – В средней панели выберите Пусто

Шаг 5 – Введите имя проекта «MFCDemoFromScratch» в поле «Имя» и нажмите «ОК» для продолжения. Вы увидите, что создан пустой проект.

MFCDemoFromScratch

Шаг 6 – Чтобы сделать его проектом MFC, щелкните правой кнопкой мыши проект и выберите «Свойства».

Выберите MFC Project & Properties

Шаг 7 – В левой части выберите Свойства конфигурации → Общие.

Шаг 8. Выберите параметр «Использовать MFC в общей библиотеке DLL» в разделе «Параметры проекта по умолчанию» и нажмите «ОК».

Шаг 9 – Так как сейчас это пустой проект; нам нужно добавить файл C ++. Итак, щелкните правой кнопкой мыши на проекте и выберите Добавить → Новый элемент …

Добавить новый предмет

Шаг 10 – Выберите C ++ File (.cpp) в средней панели, введите имя файла в поле Name и нажмите кнопку Add.

Введите имя файла

Шаг 11 – Теперь вы можете увидеть файл main.cpp, добавленный в папку «Исходные файлы».

Шаг 12 – Давайте добавим следующий код в этот файл.

Шаг 13 – Когда вы запустите это приложение, вы увидите следующий вывод на консоли.

MFC – Основы Windows

В этой главе мы расскажем об основах Windows. Чтобы создать программу, также называемую приложением, вы извлекаете класс из CFC-приложения MFC. CWinApp расшифровывается как Class для приложения Windows.

Давайте рассмотрим простой пример, создав новый проект Win32.

Шаг 1 – Откройте Visual Studio и выберите пункт меню Файл → Создать → Проект.

Шаг 2 – Теперь вы можете увидеть диалоговое окно New Project.

Приложение для Windows

Шаг 3 – На левой панели выберите Шаблоны → Visual C ++ → Win32.

Шаг 4 – В средней панели выберите Win32 Project.

Шаг 5 – Введите имя проекта «MFCWindowDemo» в поле «Имя» и нажмите «ОК» для продолжения. Вы увидите следующее диалоговое окно.

Выберите проект Win32

Шаг 6 – Нажмите Далее.

Настройка приложения Win32

Шаг 7 – Выберите параметры, как показано в приведенном выше диалоговом окне, и нажмите «Готово».

MFCWindowsDemo

Шаг 8 – Пустой проект создан.

Шаг 9 – Чтобы сделать его проектом MFC, щелкните проект правой кнопкой мыши и выберите «Свойства».

Страница свойств MFCWindowDemo

Шаг 10 – В левом разделе нажмите Свойства конфигурации → Общие.

Шаг 11 – Выберите параметр «Использовать MFC в общей библиотеке DLL» в разделе «Параметры проекта по умолчанию» и нажмите «ОК».

Шаг 12 – Добавьте новый исходный файл.

Шаг 13 – Щелкните правой кнопкой мыши свой проект и выберите Добавить → Новый элемент …

Шаг 14 – В разделе Шаблоны выберите Файл C ++ (.cpp).

MFCWindowDemo Добавить новый товар

Шаг 15 – Установите имя в качестве примера и нажмите «Добавить».

Создание окна

Любое приложение имеет два основных раздела –

  • Учебный класс
  • Рамка или Окно

Давайте создадим окно, используя следующие шаги –

Шаг 1 – Чтобы создать приложение, нам нужно извлечь класс из CWinApp MFC.

Шаг 2 – Нам также нужен фрейм / окно для отображения содержимого нашего приложения.

Шаг 3 – Для этого нам нужно добавить еще один класс и извлечь его из класса CFrameWnd MFC, реализовать его конструктор и вызвать метод Create (), который создаст кадр / окно, как показано в следующем коде.

Шаг 4. Как видите, для метода Create () нужны два параметра: имя класса, которое должно быть передано как NULL, и имя окна, которое является строкой, которая будет отображаться в строке заголовка.

Главное окно

После создания окна, чтобы позволить приложению использовать его, вы можете использовать указатель, чтобы показать класс, используемый для создания окна. В этом случае указатель будет CFrameWnd. Чтобы использовать окно фрейма, присвойте его указатель переменной-члену CWinThread :: m_pMainWnd. Это делается в реализации InitInstance () вашего приложения.

Шаг 1 – Вот реализация InitInstance () в классе CExample.

Шаг 2 – Ниже приведена полная реализация файла Example.cpp.

Шаг 3 – Когда мы запускаем вышеуказанное приложение, создается следующее окно.

Созданное окно

Стили Windows

Стили Windows – это характеристики, которые управляют такими функциями, как внешний вид окна, границы, свернутое или развернутое состояние или другие состояния изменения размера и т. Д.

Ниже приведен список стилей, которые вы можете использовать при создании окна.

Создает окно с рамкой.

Создает окно с заголовком (подразумевает стиль WS_BORDER). Не может использоваться со стилем WS_DLGFRAME.

Создает дочернее окно. Не может использоваться со стилем WS_POPUP.

WS_CHILDWINDOW

То же, что и стиль WS_CHILD.

WS_CLIPCHILDREN

Исключает область, занимаемую дочерними окнами при рисовании в родительском окне. Используется при создании родительского окна.

стиль WS_CLIPSIBLINGS

Обрезает дочерние окна относительно друг друга; то есть, когда конкретное дочернее окно получает сообщение рисования, стиль WS_CLIPSIBLINGS обрезает все другие перекрывающиеся дочерние окна из области дочернего окна, подлежащей обновлению. (Если WS_CLIPSIBLINGS не задан и дочерние окна перекрываются, когда вы рисуете в клиентской области дочернего окна, можно рисовать в клиентской области соседнего дочернего окна.) Только для использования со стилем WS_CHILD.

WS_DISABLED

Создает окно, которое изначально отключено.

WS_DLGFRAME

Создает окно с двойной рамкой, но без заголовка.

Определяет первый элемент управления группы элементов управления, в которых пользователь может переходить от одного элемента управления к следующему с помощью клавиш со стрелками. Все элементы управления, определенные с FALSE в стиле WS_GROUP после первого элемента управления, принадлежат одной и той же группе. Следующий элемент управления со стилем WS_GROUP запускает следующую группу (то есть одна группа заканчивается там, где начинается следующая).

Создает окно с горизонтальной полосой прокрутки.

Создает окно, которое изначально свернуто. То же, что и стиль WS_MINIMIZE.

WS_MAXIMIZE

Создает окно максимального размера.

WS_MAXIMIZEBOX

Создает окно с кнопкой «Развернуть».

WS_MINIMIZE

Создает окно, которое изначально свернуто. Только для использования со стилем WS_OVERLAPPED.

WS_MINIMIZEBOX

Создает окно с кнопкой «Свернуть».

WS_OVERLAPPED

Создает перекрывающееся окно. Перекрывающееся окно обычно имеет заголовок и границу.

WS_OVERLAPPED WINDOW

Создает перекрывающееся окно со стилями WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME, WS_MINIMIZEBOX и WS_MAXIMIZEBOX.

Создает всплывающее окно. Не может использоваться со стилем WS_CHILD.

WS_POPUPWINDOW

Создает всплывающее окно со стилями WS_BORDER, WS_POPUP и WS_SYSMENU. Стиль WS_CAPTION должен сочетаться со стилем WS_POPUPWINDOW, чтобы сделать меню управления видимым.

Создает окно с границей размеров. То же, что и стиль WS_THICKFRAME.

Создает окно, которое имеет строку меню Control в строке заголовка. Используется только для окон с заголовками.

Указывает один из любого количества элементов управления, с помощью которых пользователь может перемещаться с помощью клавиши TAB. Клавиша TAB перемещает пользователя к следующему элементу управления, указанному в стиле WS_TABSTOP.

WS_THICKFRAME

Создает окно с толстой рамкой, которое можно использовать для определения размера окна.

Создает перекрывающееся окно. Перекрытое окно имеет строку заголовка и границу. То же, что и стиль WS_OVERLAPPED.

WS_TILEDWINDOW

Создает перекрывающееся окно со стилями WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME, WS_MINIMIZEBOX и WS_MAXIMIZEBOX. То же, что и стиль WS_OVERLAPPEDWINDOW.

Создает окно, которое изначально видно.

Создает окно с вертикальной полосой прокрутки.

Создает окно с рамкой.

Создает окно с заголовком (подразумевает стиль WS_BORDER). Не может использоваться со стилем WS_DLGFRAME.

Создает дочернее окно. Не может использоваться со стилем WS_POPUP.

WS_CHILDWINDOW

То же, что и стиль WS_CHILD.

WS_CLIPCHILDREN

Исключает область, занимаемую дочерними окнами при рисовании в родительском окне. Используется при создании родительского окна.

стиль WS_CLIPSIBLINGS

Обрезает дочерние окна относительно друг друга; то есть, когда конкретное дочернее окно получает сообщение рисования, стиль WS_CLIPSIBLINGS обрезает все другие перекрывающиеся дочерние окна из области дочернего окна, подлежащей обновлению. (Если WS_CLIPSIBLINGS не задан и дочерние окна перекрываются, когда вы рисуете в клиентской области дочернего окна, можно рисовать в клиентской области соседнего дочернего окна.) Только для использования со стилем WS_CHILD.

WS_DISABLED

Создает окно, которое изначально отключено.

WS_DLGFRAME

Создает окно с двойной рамкой, но без заголовка.

Определяет первый элемент управления группы элементов управления, в которых пользователь может переходить от одного элемента управления к следующему с помощью клавиш со стрелками. Все элементы управления, определенные с FALSE в стиле WS_GROUP после первого элемента управления, принадлежат одной и той же группе. Следующий элемент управления со стилем WS_GROUP запускает следующую группу (то есть одна группа заканчивается там, где начинается следующая).

Создает окно с горизонтальной полосой прокрутки.

Создает окно, которое изначально свернуто. То же, что и стиль WS_MINIMIZE.

WS_MAXIMIZE

Создает окно максимального размера.

WS_MAXIMIZEBOX

Создает окно с кнопкой «Развернуть».

WS_MINIMIZE

Создает окно, которое изначально свернуто. Только для использования со стилем WS_OVERLAPPED.

WS_MINIMIZEBOX

Создает окно с кнопкой «Свернуть».

WS_OVERLAPPED

Создает перекрывающееся окно. Перекрывающееся окно обычно имеет заголовок и границу.

WS_OVERLAPPED WINDOW

Создает перекрывающееся окно со стилями WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME, WS_MINIMIZEBOX и WS_MAXIMIZEBOX.

Создает всплывающее окно. Не может использоваться со стилем WS_CHILD.

WS_POPUPWINDOW

Создает всплывающее окно со стилями WS_BORDER, WS_POPUP и WS_SYSMENU. Стиль WS_CAPTION должен сочетаться со стилем WS_POPUPWINDOW, чтобы сделать меню управления видимым.

Создает окно с границей размеров. То же, что и стиль WS_THICKFRAME.

Создает окно, которое имеет строку меню Control в строке заголовка. Используется только для окон с заголовками.

Указывает один из любого количества элементов управления, с помощью которых пользователь может перемещаться с помощью клавиши TAB. Клавиша TAB перемещает пользователя к следующему элементу управления, указанному в стиле WS_TABSTOP.

WS_THICKFRAME

Создает окно с толстой рамкой, которое можно использовать для определения размера окна.

Создает перекрывающееся окно. Перекрытое окно имеет строку заголовка и границу. То же, что и стиль WS_OVERLAPPED.

WS_TILEDWINDOW

Создает перекрывающееся окно со стилями WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME, WS_MINIMIZEBOX и WS_MAXIMIZEBOX. То же, что и стиль WS_OVERLAPPEDWINDOW.

Создает окно, которое изначально видно.

Создает окно с вертикальной полосой прокрутки.

Шаг 1 – Давайте посмотрим на простой пример, в котором мы добавим некоторые стили. После создания окна, чтобы отобразить его пользователю, мы можем применить к нему стиль WS_VISIBLE и дополнительно добавим стиль WS_OVERLAPPED. Вот реализация –

Шаг 2 – Когда вы запускаете это приложение, создается следующее окно.

Созданное окно

Теперь вы можете видеть, что параметры минимизации, максимизации и закрытия больше не отображаются.

Расположение Windows

Для определения местоположения объектов, отображаемых на мониторе, компьютер использует систему координат, аналогичную декартовой, но начало координат находится в верхнем левом углу экрана. Используя эту систему координат, любая точка может быть расположена на расстоянии от верхнего левого угла экрана по горизонтальной и вертикальной осям.

Библиотека Win32 предоставляет структуру POINT, определенную следующим образом:

Переменная-член ‘x’ – это расстояние от левой границы экрана до точки.

Переменная ‘y’ представляет расстояние от верхней границы экрана до точки.

Помимо структуры POINT в Win32, библиотека Microsoft Foundation Class (MFC) предоставляет класс CPoint.

Это обеспечивает ту же функциональность, что и структура POINT. Как класс C ++, он добавляет больше функциональности, необходимой для определения местоположения точки. Он предоставляет два конструктора.

Переменная-член ‘x’ – это расстояние от левой границы экрана до точки.

Переменная ‘y’ представляет расстояние от верхней границы экрана до точки.

Помимо структуры POINT в Win32, библиотека Microsoft Foundation Class (MFC) предоставляет класс CPoint.

Это обеспечивает ту же функциональность, что и структура POINT. Как класс C ++, он добавляет больше функциональности, необходимой для определения местоположения точки. Он предоставляет два конструктора.

Размер Windows

В то время как точка используется для определения местоположения объекта на экране, каждое окно имеет размер. Размер обеспечивает две меры, связанные с объектом.

  • Ширина объекта.
  • Высота объекта.

Библиотека Win32 использует структуру SIZE, определенную следующим образом:

Помимо структуры SIZE в Win32, MFC предоставляет класс CSize. Этот класс имеет те же функциональные возможности, что и SIZE, но добавляет функции класса C ++. Он предоставляет пять конструкторов, которые позволяют вам создавать переменные размера любым способом по вашему выбору.

Размеры Windows

Когда отображается окно, его можно определить на экране по его расположению относительно границ монитора. Окно также можно определить по ширине и высоте. Эти характеристики указываются или управляются прямым аргументом метода Create () . Этот аргумент представляет собой прямоугольник, который можно создать с помощью структуры Win32 RECT.

Помимо структуры RECT Win32, MFC предоставляет класс CRect, который имеет следующие конструкторы:

Давайте посмотрим на простой пример, в котором мы будем указывать расположение и размер окна

При запуске этого приложения в верхнем левом углу экрана создается следующее окно, как указано в конструкторе CRect в первых двух параметрах. Последние два параметра – это размер окна.

Окно созданного приложения

Windows Parents

В реальном мире многие приложения сделаны из разных окон. Когда приложение использует различные Windows, большинство объектов зависят от конкретного. Это может быть первое окно, которое было создано, или другое окно, которое вы определили. Такое окно называется родительским окном . Все остальные окна зависят от этого прямо или косвенно.

Если создаваемое вами окно зависит от другого, вы можете указать, что у него есть родительский элемент.

Это делается с помощью аргумента pParentWnd метода CFrameWnd :: Create ().

Если у окна нет родителя, передайте аргумент со значением NULL.

Если создаваемое вами окно зависит от другого, вы можете указать, что у него есть родительский элемент.

Это делается с помощью аргумента pParentWnd метода CFrameWnd :: Create ().

Если у окна нет родителя, передайте аргумент со значением NULL.

Давайте рассмотрим пример, в котором есть только одно окно, а родительское окно недоступно, поэтому мы передадим аргумент со значением NULL, как показано в следующем коде:

Когда вы запускаете вышеуказанное приложение, вы видите тот же вывод.

Окно созданного приложения

MFC – Диалоговые окна

В этой главе мы рассмотрим диалоговые окна. Приложения для Windows часто общаются с пользователем через диалоговые окна. Класс CDialog предоставляет интерфейс для управления диалоговыми окнами. Диалоговый редактор Visual C ++ позволяет легко проектировать диалоговые окна и создавать их ресурсы шаблона диалога.

Создание объекта диалога является двухфазной операцией –

Построить объект диалога.

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

Создание объекта диалога является двухфазной операцией –

Построить объект диалога.

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

Давайте рассмотрим простой пример, создав новый проект Win32.

Шаг 1 – Откройте Visual Studio и выберите пункт меню Файл → Создать → Проект.

Шаг 2 – Теперь вы можете увидеть диалоговое окно New Project.

Диалоговое окно «Новый проект»

Шаг 3 – На левой панели выберите Шаблоны → Visual C ++ → Win32.

Шаг 4 – В средней панели выберите Win32 Project.

Шаг 5 – Введите имя проекта «MFCDialogDemo» в поле «Имя» и нажмите «ОК» для продолжения. Вы увидите следующий диалог.

MFCDialogDemo Project

Шаг 6 – Нажмите Далее.

Настройка MFCDialogDemo

Шаг 7 – Выберите параметры, показанные в диалоговом окне, указанном выше, и нажмите Готово.

Параметры MFCDialogDemo

Шаг 8 – Пустой проект создан.

Шаг 9 – Чтобы сделать его проектом MFC, щелкните проект правой кнопкой мыши и выберите «Свойства».

MFCDialogDemo Property

Шаг 10 – В левом разделе нажмите Свойства конфигурации → Общие.

Шаг 11 – Выберите параметр «Использовать MFC в общей библиотеке DLL» в разделе «Параметры проекта по умолчанию» и нажмите «ОК».

Шаг 12 – Добавьте новый исходный файл.

Шаг 13 – Щелкните правой кнопкой мыши по вашему проекту и выберите Добавить → Новый элемент.

Шаг 14 – В разделе «Шаблоны» нажмите «Файл C ++» (.cpp)

MFCDialogDemo Добавить запись

Шаг 15 – Установите имя в качестве примера и нажмите «Добавить».

Шаг 16. Чтобы создать приложение, нам нужно добавить класс и извлечь его из CWinApp MFC.

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

Шаг 1. Чтобы создать диалоговое окно, щелкните правой кнопкой мыши папку Resource Files в обозревателе решений и выберите Add → Resource.

Добавить ресурс

Шаг 2 – В диалоговом окне «Добавить ресурс» выберите «Диалог» и нажмите «Создать».

Шаг 3 – Диалоговое окно требует некоторой подготовки, прежде чем фактически его создавать программно.

Шаг 4 – Сначала можно вручную создать диалоговое окно в виде текстового файла (в файле ресурсов).

Шаг 5 – Теперь вы можете увидеть файл MFCDialogDemo.rc, созданный в разделе Resource Files.

MFCDialogDemo FIle

Шаг 6 – Файл ресурсов открыт в конструкторе. То же самое можно открыть как текстовый файл. Щелкните правой кнопкой мыши файл ресурса и выберите «Открыть с помощью».

Открыть с помощью файла MFCDialogDemo

Шаг 7 – Выберите редактор исходного кода (текст) и нажмите кнопку Добавить.

Редактор исходного кода

Шаг 8 – Вернитесь к конструктору, щелкните правой кнопкой мыши диалоговое окно и выберите «Свойства».

DialogBox Выбрать свойства

Шаг 9 – Вам нужно выбрать из множества вариантов.

Шаг 10 – Как и большинство других элементов управления, диалоговое окно должно быть идентифицировано. Идентификатор (ID) диалогового окна обычно начинается с IDD_. Давайте изменим ID на IDD_EXAMPLE_DLG.

Расположение диалога

Диалоговое окно должно быть «физически» расположено в приложении. Поскольку диалоговое окно обычно создается в качестве родительского элемента для других элементов управления, его расположение зависит от его отношения к родительскому окну или к рабочему столу.

Если вы посмотрите и окно свойств, вы увидите два поля, X Pos и ​​Y Pos.

Расположение диалога

X – расстояние от левой границы монитора до левой границы диалогового окна.

Y – расстояние от верхней границы монитора до верхней границы диалогового окна.

X – расстояние от левой границы монитора до левой границы диалогового окна.

Y – расстояние от верхней границы монитора до верхней границы диалогового окна.

По умолчанию эти поля установлены на ноль. Вы также можете изменить, как показано выше.

Если вы укажете эти два измерения как 0, левая и верхняя границы диалогового окна будут установлены так, что объект появится в центре по центру экрана.

Диалоговое окно Размеры

Размеры диалогового окна относятся к его ширине и высоте. Вы можете изменить ширину и высоту с помощью мыши в окне дизайнера.

Диалоговое окно Размер

Вы можете увидеть изменения ширины и высоты в строке состояния.

Методы диалоговых окон

Базовый класс, используемый для отображения диалоговых окон на экране, – это класс CDialog. Чтобы создать диалоговое окно, нам нужно извлечь класс из CDialog. Сам класс CDialog предоставляет три конструктора:

Давайте создадим еще один класс CExampleDlg и выведем его из CDialog. Мы реализуем его конструктор по умолчанию, как показано в следующем коде.

Нам нужно создать этот диалог в методе CExample :: InitInstance (), как показано в следующем коде.

Модальные диалоговые окна

Существует два типа диалоговых окон – немодальное и модальное . Модальные и немодальные диалоговые окна отличаются процессом, используемым для их создания и отображения.

Немодальное диалоговое окно

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

Чтобы создать немодальное диалоговое окно, вызовите ваш общедоступный конструктор, а затем вызовите функцию Create member объекта диалога, чтобы загрузить ресурс диалога.

Вы можете вызвать Create во время или после вызова конструктора. Если ресурс диалога имеет свойство WS_VISIBLE, диалоговое окно появляется немедленно.

Если нет, вы должны вызвать его функцию-член ShowWindow.

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

Чтобы создать немодальное диалоговое окно, вызовите ваш общедоступный конструктор, а затем вызовите функцию Create member объекта диалога, чтобы загрузить ресурс диалога.

Вы можете вызвать Create во время или после вызова конструктора. Если ресурс диалога имеет свойство WS_VISIBLE, диалоговое окно появляется немедленно.

Если нет, вы должны вызвать его функцию-член ShowWindow.

Модальный диалог

Чтобы создать модальное диалоговое окно, вызовите любой из двух открытых конструкторов, объявленных в CDialog.

Затем вызовите функцию- член DoModal объекта диалога, чтобы отобразить диалоговое окно и управлять взаимодействием с ним, пока пользователь не выберет OK или Отмена.

Это управление DoModal делает модальное диалоговое окно. Для модальных диалоговых окон DoModal загружает ресурс диалога.

Чтобы создать модальное диалоговое окно, вызовите любой из двух открытых конструкторов, объявленных в CDialog.

Затем вызовите функцию- член DoModal объекта диалога, чтобы отобразить диалоговое окно и управлять взаимодействием с ним, пока пользователь не выберет OK или Отмена.

Это управление DoModal делает модальное диалоговое окно. Для модальных диалоговых окон DoModal загружает ресурс диалога.

Шаг 1 – Чтобы отобразить диалоговое окно как модальное, в событии CExample :: InitInstance () вызовите метод DoModal () с помощью вашей диалоговой переменной –

Шаг 2 – Вот полная реализация файла Example.cpp.

Шаг 3 – Когда приведенный выше код скомпилирован и выполнен, вы увидите следующее диалоговое окно.

Диалоговое окно

Приложения на основе диалогов

Microsoft Visual Studio предоставляет более простой способ создания приложения, основанного главным образом на диалоговом окне. Вот шаги для создания базового проекта диалога, используя шаблоны проектов, доступные в Visual Studio –

Шаг 1 – Откройте Visual Studio и выберите пункт меню Файл → Создать → Проект. Вы можете увидеть диалоговое окно New Project.

Диалоговый шаблон проекта

Шаг 2 – На левой панели выберите Шаблоны → Visual C ++ → MFC.

Шаг 3 – В средней панели выберите Приложение MFC.

Шаг 4 – Введите имя проекта «MFCModalDemo» в поле «Имя» и нажмите «ОК» для продолжения. Вы увидите следующее диалоговое окно.

MFCModalDemo Application2

Шаг 5 – Нажмите Далее.

MFCModalDemo Type

Шаг 6 – Выберите параметры, показанные в диалоговом окне выше, и нажмите Далее.

Параметры приложения MFCModalDemo

Шаг 7 – Отметьте все параметры, которые вы выбрали в диалоговом окне, такие как «Развернуть и свернуть поля», и нажмите «Далее».

MFCModalDemo Расширенные возможности

Шаг 8 – Нажмите Далее.

MFCModalDemo сгенерированные классы

Шаг 9 – Он сгенерирует эти два класса. Вы можете изменить название классов и нажать «Готово».

Шаг 10. Теперь вы видите, что мастер MFC создает это диалоговое окно и файлы проекта по умолчанию.

Приложение DialogBox

Шаг 11 – Когда вы запустите это приложение, вы увидите следующий вывод.

MFCModalDemo Результат

MFC – ресурсы Windows

Ресурс – это текстовый файл, который позволяет компилятору управлять такими объектами, как изображения, звуки, курсоры мыши, диалоговые окна и т. Д. Microsoft Visual Studio особенно упрощает создание файла ресурсов, предоставляя необходимые инструменты в той же среде, которая используется для программирования. Это означает, что вам обычно не нужно использовать внешнее приложение для создания или настройки файла ресурсов. Ниже приведены некоторые важные функции, связанные с ресурсами.

Ресурсы – это элементы интерфейса, которые предоставляют информацию пользователю.

Растровые изображения, значки, панели инструментов и курсоры – все это ресурсы.

Некоторыми ресурсами можно манипулировать для выполнения действия, такого как выбор из меню или ввод данных в диалоговом окне.

Приложение может использовать различные ресурсы, которые ведут себя независимо друг от друга, эти ресурсы сгруппированы в текстовый файл с расширением * .rc.

Большинство ресурсов создаются путем выбора нужного из диалогового окна «Добавить ресурс».

Ресурсы – это элементы интерфейса, которые предоставляют информацию пользователю.

Растровые изображения, значки, панели инструментов и курсоры – все это ресурсы.

Некоторыми ресурсами можно манипулировать для выполнения действия, такого как выбор из меню или ввод данных в диалоговом окне.

Приложение может использовать различные ресурсы, которые ведут себя независимо друг от друга, эти ресурсы сгруппированы в текстовый файл с расширением * .rc.

Большинство ресурсов создаются путем выбора нужного из диалогового окна «Добавить ресурс».

Добавить ресурс

Диалоговое окно Add Resource предоставляет обширный список ресурсов, которые можно использовать в соответствии с требованиями, но если вам нужно что-то, что недоступно, вы можете добавить его вручную в файл * .rc перед выполнением программы.

Диалоговое окно Add Resource предоставляет обширный список ресурсов, которые можно использовать в соответствии с требованиями, но если вам нужно что-то, что недоступно, вы можете добавить его вручную в файл * .rc перед выполнением программы.

Идентификаторы

Идентификатор – это символ, который является постоянным целым числом, имя которого обычно начинается с идентификатора. Он состоит из двух частей – текстовой строки (имени символа), сопоставленной с целочисленным значением (значением символа).

Символы предоставляют описательный способ обращения к ресурсам и объектам пользовательского интерфейса как в исходном коде, так и во время работы с ними в редакторах ресурсов.

Когда вы создаете новый ресурс или объект ресурса, редакторы ресурсов предоставляют имя ресурса по умолчанию, например, IDC_DIALOG1, и присваивают ему значение.

Определение «имя-плюс-значение» хранится в файле Resource.h.

Символы предоставляют описательный способ обращения к ресурсам и объектам пользовательского интерфейса как в исходном коде, так и во время работы с ними в редакторах ресурсов.

Когда вы создаете новый ресурс или объект ресурса, редакторы ресурсов предоставляют имя ресурса по умолчанию, например, IDC_DIALOG1, и присваивают ему значение.

Определение «имя-плюс-значение» хранится в файле Resource.h.

Шаг 1 – Давайте посмотрим на наш пример CMFCDialogDemo из последней главы, в которой мы создали диалоговое окно и его ID – IDD_EXAMPLE_DLG .

CMFCDialogDemo

Шаг 2 – Перейдите в Solution Explorer, вы увидите файл resource.h в разделе Header Files. Продолжите, открыв этот файл в редакторе, и вы увидите идентификатор диалогового окна и его целочисленное значение.

Identifiers2

Иконки

Значок – это маленькая картинка, используемая в окне, представляющая приложение. Он используется в двух основных сценариях.

На рамке окна оно отображается слева от названия окна в строке заголовка.

В проводнике Windows, на рабочем столе, в моем компьютере или в окне панели управления.

На рамке окна оно отображается слева от названия окна в строке заголовка.

В проводнике Windows, на рабочем столе, в моем компьютере или в окне панели управления.

Если вы посмотрите на наш пример MFCModalDemo, вы увидите, что Visual Studio использовала значок по умолчанию для строки заголовка, как показано на следующем снимке.

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

Шаг 1 – Щелкните правой кнопкой мыши по своему проекту и выберите «Добавить» → «Ресурсы», откроется диалоговое окно «Добавить ресурсы».

Выберите Добавить ресурсы

Шаг 2 – Выберите Icon и нажмите кнопку New, и вы увидите следующий значок.

Шаг 3 – В Solution Explorer перейдите в Resource View и разверните MFCModalDemo> Icon. Вы увидите две иконки. IDR_MAINFRAME является значением по умолчанию, а IDI_ICON1 является вновь созданным значком.

Шаг 4 – Щелкните правой кнопкой мыши по вновь созданному значку и выберите Свойства.

Шаг 5 – IDI_ICON1 является идентификатором этого значка, теперь давайте изменим этот идентификатор на IDR_MYICON.

Шаг 6 – Теперь вы можете изменить этот значок в конструкторе в соответствии с вашими требованиями. Мы будем использовать тот же значок.

Шаг 7 – Сохраните этот значок.

Шаг 8 – Перейдите к конструктору CMFCModalDemoDlg в файле CMFCModalDemoDlg.cpp, который будет выглядеть как следующий код.

Шаг 9 – Теперь вы можете видеть, что значок по умолчанию загружен в конструктор. Давайте изменим его на IDR_ MYICON, как показано в следующем коде.

Шаг 10 – Когда приведенный выше код скомпилирован и выполнен, вы увидите, что новый значок отображается в диалоговом окне.

Модальный Демо

Меню позволяют вам упорядочивать команды логично и легко найти. С помощью редактора меню вы можете создавать и редактировать меню, работая непосредственно со строкой меню, которая очень похожа на строку в готовом приложении. Чтобы создать меню, выполните следующие действия:

Шаг 1 – Щелкните правой кнопкой мыши по вашему проекту и выберите «Добавить» → «Ресурсы». Вы увидите диалоговое окно Add Resources.

Добавить ресурсы меню

Шаг 2 – Выберите Меню и нажмите Новый. Вы увидите прямоугольник с надписью «Введите здесь» в строке меню.

Введите здесь в строке меню

Шаг 3 – Напишите некоторые пункты меню, такие как «Файл», «Редактировать» и т. Д., Как показано на следующем снимке.

Опции меню

Шаг 4 – Если вы развернете папку «Меню» в представлении ресурсов, вы увидите идентификатор меню IDR_MENU1. Щелкните правой кнопкой мыши по этому идентификатору и измените его на IDM_MAINMENU.

Идентификатор меню

Шаг 5 – Сохраните все изменения.

Шаг 6 – Нам нужно прикрепить это меню к нашему диалоговому окну. Разверните папку Dialog в обозревателе решений и дважды щелкните идентификатор диалогового окна.

Папка диалога

Шаг 7 – Вы увидите поле меню в Свойствах. Выберите идентификатор меню из выпадающего списка, как показано выше.

Шаг 8 – Запустите это приложение, и вы увидите следующее диалоговое окно, которое также содержит пункты меню.

Вариант меню

Панели инструментов

Панель инструментов – это элемент управления Windows, который позволяет пользователю выполнять некоторые действия с формой, нажимая кнопку вместо использования меню.

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

Панель инструментов может приблизить такие общие действия к пользователю.

Панели инструментов обычно отображаются под главным меню.

Они могут быть оснащены кнопками, но иногда их кнопки или некоторые кнопки имеют подпись.

Панели инструментов также могут быть оснащены другими типами элементов управления.

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

Панель инструментов может приблизить такие общие действия к пользователю.

Панели инструментов обычно отображаются под главным меню.

Они могут быть оснащены кнопками, но иногда их кнопки или некоторые кнопки имеют подпись.

Панели инструментов также могут быть оснащены другими типами элементов управления.

Чтобы создать панель инструментов, выполните следующие действия.

Шаг 1 – Щелкните правой кнопкой мыши по вашему проекту и выберите «Добавить» → «Ресурсы». Вы увидите диалоговое окно Add Resources.

Панель инструментов

Шаг 2 – Выберите Панель инструментов и нажмите Новый. Вы увидите следующий экран.

Выберите панель инструментов

Шаг 3. Создайте панель инструментов в конструкторе, как показано на следующем снимке экрана, а также укажите идентификаторы.

Панель инструментов дизайна

Шаг 4 – Добавьте эти две переменные в класс CMFCModalDemoDlg.

Читать:
Как запустить блок питания от монитора

Шаг 5 – Ниже приведена полная реализация CMFCModalDemoDlg в файле CMFCModalDemoDlg.h –

Шаг 6 – Обновите CMFCModalDemoDlg :: OnInitDialog (), как показано в следующем коде.

Шаг 7 – Запустите это приложение. Вы увидите следующее диалоговое окно, которое также содержит панель инструментов.

Toolbar4

Ускорители

Клавиша доступа – это буква, которая позволяет пользователю быстрее выполнять действия в меню, используя клавиатуру вместо мыши. Обычно это происходит быстрее, поскольку пользователю не нужно никуда размещать мышь, что сокращает время, необходимое для выполнения действия.

Шаг 1 – Чтобы создать ключ доступа, введите амперсанд «&» слева от пункта меню.

Создать ключ доступа

Шаг 2 – Повторите этот шаг для всех пунктов меню. Запустите это приложение и нажмите Alt. Вы увидите, что первая буква всех пунктов меню подчеркнута.

Вариант меню

Быстрая клавиша

Сочетание клавиш – это клавиша или комбинация клавиш, используемая опытными пользователями для выполнения действия, которое в противном случае было бы выполнено для элемента меню. Большинство сочетаний клавиш представляют собой комбинацию клавиши Ctrl, одновременно нажатой с помощью буквенной клавиши. Например, Ctrl + N, Ctrl + O или Ctrl + D.

Чтобы создать ярлык, в правой части строки, которая составляет заголовок меню, щелкните правой кнопкой мыши элемент меню и выберите свойства.

В поле «Заголовок» введите \ t, а затем нужную комбинацию, как показано ниже для параметра «Новое меню». Повторите этот шаг для всех пунктов меню.

Быстрая клавиша

Ускоритель

Таблица ускорителей – это список элементов, в котором каждый элемент таблицы объединяет идентификатор, сочетание клавиш и постоянное число, которое определяет тип клавиши ускорения. Как и другие ресурсы, таблицу ускорений можно создать вручную в файле .rc. Ниже приведены шаги для создания таблицы акселератора.

Шаг 1 – Чтобы создать таблицу ускорений, щелкните правой кнопкой мыши файл * .rc в обозревателе решений.

Ускоритель

Шаг 2 – Выберите ускоритель и нажмите «Создать».

Выберите ускоритель

Шаг 3 – Нажмите на стрелку поля со списком ID и выберите пункт меню.

Ускоритель

Шаг 4 – Выберите Ctrl из выпадающего списка Модификатор.

Шаг 5 – Щелкните поле «Ключ» и введите соответствующие ключи для обоих пунктов меню.

Мы также добавим новый обработчик события пункта меню в тестирование. Щелкните правой кнопкой мыши пункт «Новое меню».

Обработчик события

Шаг 6 – Вы можете указать класс, тип сообщения и имя обработчика. А пока оставим все как есть и нажмите кнопку «Добавить и изменить».

Имя обработчика типа сообщения

Шаг 7 – Выберите Добавить обработчик событий.

Шаг 8 – Теперь вы увидите событие, добавленное в конец файла CMFCModalDemoDlg.cpp.

Шаг 9Теперь давайте добавим окно сообщения, которое будет отображать простую опцию меню сообщения.

Для запуска таблицы акселератора в рабочем режиме добавьте переменную HACCEL и ProcessMessageFilter, как показано в следующем CMFCModalDemoApp.

Шаг 10 – Загрузите ускоритель и следующий вызов в CMFCModalDemoApp :: InitInstance ().

Шаг 11 – Вот реализация ProcessMessageFilter.

Шаг 12 – Когда приведенный выше код скомпилирован и выполнен, вы увидите следующий вывод.

Ускоритель Результат

Шаг 13 – Нажмите кнопку Alt, затем клавишу F, а затем клавишу N или Ctrl + N. Вы увидите следующее сообщение.

Ускоритель

MFC – листы недвижимости

Лист свойств , также известный как диалоговое окно с вкладкой, представляет собой диалоговое окно, содержащее страницы свойств. Каждая страница свойств основана на ресурсе шаблона диалога и содержит элементы управления. Он вложен в страницу с вкладкой сверху. Вкладка называет страницу и указывает ее назначение. Пользователи щелкают вкладку в окне свойств, чтобы выбрать набор элементов управления.

Чтобы создать страницы свойств, давайте рассмотрим простой пример создания диалогового проекта MFC.

Проект МФЦ

Как только проект создан, нам нужно добавить несколько страниц свойств.

Visual Studio позволяет легко создавать ресурсы для страниц свойств, отображая диалоговое окно «Добавить ресурс», раскрывая узел «Диалог» и выбирая один из элементов IDD_PROPPAGE_X.

Шаг 1 – Щелкните правой кнопкой мыши свой проект в обозревателе решений и выберите «Добавить» → «Ресурсы».

IDD Propage Larg

Шаг 2 – Выберите IDD_PROPPAGE_LARGE и нажмите NEW.

IDD Propage Larg New

Шаг 3 – Давайте изменим ID и заголовок этой страницы свойств на IDD_PROPPAGE_1 и Страница свойств соответственно, как показано выше.

Шаг 4 – Щелкните правой кнопкой мыши на странице свойств в окне дизайнера.

Propage в окне дизайнера

Шаг 5 – Выберите опцию Добавить класс.

Propage Add Class Option

Шаг 6 – Введите имя класса и выберите CPropertyPage из выпадающего списка базового класса.

Шаг 7 – Нажмите Готово, чтобы продолжить.

Шаг 8 – Добавьте еще одну страницу свойств с идентификатором IDD_PROPPAGE_2 и Caption Property Page 2, выполнив вышеупомянутые шаги.

Шаг 9 – Теперь вы можете увидеть две страницы свойств. Для реализации его функциональности нам нужен лист свойств.

Лист свойств группирует страницы свойств и сохраняет их как сущность.

Чтобы создать лист свойств, выполните следующие действия:

Шаг 1 – Щелкните правой кнопкой мыши по вашему проекту и выберите «Добавить»> «Параметры меню класса».

Создать лист недвижимости

Шаг 2. Выберите Visual C ++ → MFC на левой панели и класс MFC на панели шаблонов и нажмите кнопку Добавить.

Класс MFC в панели шаблонов

Шаг 3 – Введите имя класса и выберите CPropertySheet из выпадающего списка базового класса.

Шаг 4 – Нажмите «Готово», чтобы продолжить.

Шаг 5 – Чтобы запустить этот лист свойств, нам нужны следующие изменения в нашем основном классе проекта.

Шаг 6 – Добавьте следующие ссылки в файл CMFCPropSheetDemo.cpp.

Шаг 7. Измените метод CMFCPropSheetDemoApp :: InitInstance (), как показано в следующем коде.

Шаг 8 – Вот полная реализация файла CMFCPropSheetDemo.cpp.

Шаг 9 – Когда приведенный выше код скомпилирован и выполнен, вы увидите следующее диалоговое окно. Это диалоговое окно содержит две страницы свойств.

Страницы собственности

MFC – Windows Layout

Расположение элементов управления очень важно и важно для удобства использования приложения. Он используется для организации группы элементов GUI в вашем приложении. Есть некоторые важные вещи, которые следует учитывать при выборе макета –

  • Позиции дочерних элементов.
  • Размеры дочерних элементов.

Добавление элементов управления

Давайте создадим новый основанный на диалоге проект MFC MFCLayoutDemo.

Шаг 1 – После того, как проект создан, вы увидите следующий экран.

Создать добавление элементов управления

Шаг 2 – Удалить TODO из диалогового окна.

Шаг 3 – Перетащите некоторые элементы управления из панели инструментов, которые вы видите на левой стороне.

(Мы перетащим один статический текст и один элемент управления редактированием, как показано на следующем снимке).

MFCLayoutDemo Редактировать

Шаг 4 – Измените заголовок статического текста на имя.

Статический текст в имя

Контрольная Сетка

Сетка управления – это точки сетки, которые могут помочь в расположении элементов управления, которые вы добавляете во время проектирования.

Чтобы включить сетку управления, необходимо нажать кнопку «Переключить сетку» на панели инструментов, как показано на следующем снимке.

Контрольная Сетка

Управление изменением размера

После добавления элемента управления в диалоговое окно он принимает либо его размер по умолчанию, либо размер, с которым вы его нарисовали. Чтобы помочь с размерами элементов управления в форме или диалоговом окне, Visual Studio предоставляет визуальную сетку из черных точек.

Чтобы изменить размер элемента управления, то есть присвоить ему определенную ширину или высоту, поместите мышь на одну из ручек и перетащите ее в нужном направлении.

Control Resizing

Теперь вы можете изменить размеры элементов управления с помощью этой пунктирной сетки.

Позиции управления

Элементы управления, которые вы размещаете в диалоговом окне или форме, занимают свое место. В большинстве случаев эти позиции не практичны. Вы можете переместить их в любую позицию по вашему выбору.

Давайте добавим еще несколько элементов управления –

Положение управления

Шаг 1 – Чтобы переместить элемент управления, щелкните и перетащите его в нужном направлении, пока он не достигнет предполагаемого положения.

Шаг 2 – Чтобы переместить группу элементов управления, сначала выберите их. Затем перетащите выделенную область в нужное место. Давайте выберем статические тексты и элементы управления редактирования.

Статические тексты и элементы управления редактированием

Шаг 3 – Переместите эти выбранные элементы управления в левую сторону.

Переместить выделенный контроль

Переместить выделенный контроль

Чтобы помочь с позиционированием элементов управления, Visual Studio предоставляет панель инструментов диалогового окна со следующими кнопками.

Контрольная позиция 5

Шаг 1 – Давайте выровняем элементы управления Check box и Static Text по левому краю, выбрав все эти элементы управления.

Выровнять формат

Шаг 2 – Выберите Формат → Выровнять → Левые.

Выровнять по левому краю

Шаг 3 – Теперь вы можете видеть, что все эти элементы управления выровнены влево.

Tab Tabing

Элементы управления, которые вы добавляете в форму или диалоговое окно, располагаются в последовательности, которая соответствует порядку их добавления. Когда вы добавляете элементы управления независимо от секции или области, в которую вы помещаете новый элемент управления, он последовательно размещается в конце существующих элементов управления. Если вы не исправите это, пользователю будет трудно перемещаться по элементам управления. Последовательность элементов управления навигацией также известна как порядок вкладок.

Чтобы изменить вкладку, вы можете использовать опцию меню «Формат → Порядок вкладок» или комбинацию клавиш Ctrl + D. Давайте нажмем Ctrl + D.

Tab Tabing

Теперь вы можете видеть порядок, в котором все эти элементы управления добавляются в это диалоговое окно. Чтобы изменить порядок или последовательность элементов управления, щелкните все элементы управления в той последовательности, в которой вы хотите перемещаться.

В этом примере мы сначала установим флажок, а затем элементы управления Редактирование имени и адреса. Затем нажмите OK и Отмена, как показано на следующем снимке.

Заказ столика

Давайте запустим это приложение, и вы увидите следующий вывод.

Результат заказа вкладки

МФЦ – Управление Контролями

В приложениях MFC, после визуального добавления элемента управления в ваше приложение, если вы хотите сослаться на него в своем коде, вы можете объявить переменную, основанную на этом элементе управления или связанную с ним. Библиотека MFC позволяет объявлять два типа переменных для некоторых элементов управления, используемых в приложении, как значение или переменную элемента управления.

Одна переменная используется для информации, хранящейся в элементе управления, который также известен как переменная / экземпляр элемента управления .

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

Одна переменная используется для информации, хранящейся в элементе управления, который также известен как переменная / экземпляр элемента управления .

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

Переменная управления / Экземпляр

Управляющая переменная – это переменная, основанная на классе, который управляет элементом управления. Например, управление кнопками основано на классе CButton.

Чтобы увидеть эти концепции в реальном программировании, давайте создадим проект MFCControlManagement на основе диалога MFC.

MFCControlManagement

После создания проекта вы увидите следующее диалоговое окно в окне дизайнера.

MFCControlManagement создан

Шаг 1 – Удалите строку TODO и перетащите один флажок и один элемент управления Edit, как показано на следующем снимке. Измените заголовок флажка на Включить контроль.

Изменить заголовок

Шаг 2 – Щелкните правой кнопкой мыши по флажку.

Флажок MFCControlManagement

Шаг 3 – Выберите Добавить переменную.

Шаг 4 – Теперь вы можете увидеть мастер добавления переменных участников.

Добавить переменную участника

Вы можете выбрать различные параметры в этом диалоговом окне. Для флажка тип переменной – CButton. Он выбран по умолчанию в этом диалоговом окне.

Аналогично, идентификатор элемента управления также выбран по умолчанию, теперь нам нужно выбрать элемент управления в поле со списком «Категория» и ввести m_enableDisableCheck в поле редактирования «Имя переменной» и нажать «Готово».

Шаг 5. Аналогичным образом добавьте переменную элемента управления «Изменить» с настройками, как показано на следующем снимке.

Переменные управления6

Соблюдайте заголовочный файл класса диалога. Вы можете видеть, что новые переменные были добавлены сейчас.

Переменная контрольного значения

Другой тип переменной, который вы можете объявить для элемента управления, – это значение переменной. Не все элементы управления предоставляют переменную значения.

Переменная value должна иметь возможность обрабатывать тип значения, хранящегося в элементе управления, к которому она предназначена.

Например, поскольку для обработки текста используется текстовый элемент управления, вы можете объявить для него текстовый тип данных. Обычно это переменная CString.

Переменная value должна иметь возможность обрабатывать тип значения, хранящегося в элементе управления, к которому она предназначена.

Например, поскольку для обработки текста используется текстовый элемент управления, вы можете объявить для него текстовый тип данных. Обычно это переменная CString.

Давайте посмотрим на этот тип переменной для флажка и редактирования управления.

Шаг 1 – Щелкните правой кнопкой мыши по флажку и выберите Добавить переменную.

Добавить переменную

Шаг 2 – тип переменной BOOL. Выберите Value из выпадающего списка Category.

Шаг 3 – Нажмите Готово, чтобы продолжить.

Шаг 4. Аналогичным образом добавьте значение Variable для элемента управления Edit с настройками, как показано на следующем снимке.

Переменные значения

Шаг 5 – Введите CString в типе переменной и m_editControlVal в поле имени переменной.

Шаг 6 – Теперь вы можете увидеть эти переменные, добавленные в заголовочный файл.

Управляет обработчиками событий

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

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

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

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

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

Давайте посмотрим на тот же пример, в котором мы добавили обработчик событий для флажка.

Шаг 1 – Щелкните правой кнопкой мыши элемент управления, для которого вы хотите обработать событие уведомления.

Обработчик событий1

Шаг 2 – В контекстном меню выберите Добавить обработчик событий, чтобы открыть мастер обработки событий.

Мастер обработки событий

Шаг 3 – Выберите событие в поле Тип сообщения, чтобы добавить его к классу, выбранному в поле Список классов.

Шаг 4 – Примите имя по умолчанию в поле Имя обработчика функций или укажите имя по вашему выбору.

Шаг 5 – Нажмите Добавить и изменить, чтобы добавить обработчик событий.

Шаг 6 – Теперь вы можете увидеть следующее событие, добавленное в конец файла CMFCControlManagementDlg.cpp.

Управление управления

До сих пор мы видели, как добавить элементы управления в приложение. Теперь мы увидим, как управлять этими элементами управления в соответствии с требованиями пользователя. Мы можем использовать управляющую переменную / экземпляр в конкретном обработчике событий.

Шаг 1 – Давайте посмотрим на следующий пример. Здесь мы включим / отключим контроль редактирования, когда флажок установлен / снят.

Шаг 2 – Мы добавили обработчик события щелчка флажка. Вот реализация –

Шаг 3 – Когда диалоговое окно создано, нам нужно добавить следующий код в CMFCControlManagementDlg :: OnInitDialog (). Это будет управлять этими элементами управления.

Шаг 4 – Вот полная реализация файла CMFCControlManagementDlg.cpp.

Шаг 5 – Когда приведенный выше код скомпилирован и выполнен, вы увидите следующий вывод. По умолчанию флажок снят. Это также отключает контроль редактирования.

Управление управления

Шаг 6 – Установите флажок Включить контроль. Это автоматически активирует контроль редактирования.

Контроль управления

MFC – Windows Control

Элементы управления Windows – это объекты, с которыми пользователи могут взаимодействовать для ввода или манипулирования данными. Они обычно появляются в диалоговых окнах или на панелях инструментов. Существуют различные типы элементов управления –

Элемент управления на основе текста, который используется для отображения текста пользователю или запроса текста от пользователя.

Элемент управления на основе списка отображает список элементов.

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

Статический элемент управления может использоваться для отображения цветов, рисунка или чего-либо, что не всегда вписывается в вышеуказанные категории.

Элемент управления на основе текста, который используется для отображения текста пользователю или запроса текста от пользователя.

Элемент управления на основе списка отображает список элементов.

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

Статический элемент управления может использоваться для отображения цветов, рисунка или чего-либо, что не всегда вписывается в вышеуказанные категории.

Статический элемент управления – это объект, который отображает информацию для пользователя без его или ее прямого вмешательства. Его можно использовать для отображения цветов, геометрической формы или изображения, такого как значок, растровое изображение или анимация.

Элемент управления анимацией – это окно, в котором отображается аудиоклип в формате AVI. AVI-клип – это серия растровых кадров, как в фильме. Элементы управления анимацией могут воспроизводить только простые AVI-клипы, и они не поддерживают звук. Он представлен классом CAnimateCtrl .

Кнопка – это объект, который пользователь щелкает, чтобы инициировать действие. Кнопочное управление представлено классом CButton .

Кнопка растрового изображения отображает изображение или рисунок и текст на его лице. Обычно это делается для того, чтобы сделать кнопку немного явной. Кнопка растрового изображения создается с использованием класса CBitmapButton , производного от CButton.

Командная кнопка – это расширенная версия обычной кнопки. Слева отображается зеленая иконка со стрелкой, за которой следует подпись обычного размера. Под основной подписью он может отображать другую меньшую подпись, которая служит подсказкой для предоставления дополнительной информации.

Статический элемент управления отображает текстовую строку, поле, прямоугольник, значок, курсор, растровое изображение или расширенный метафайл. Он представлен классом CStatic . Его можно использовать для маркировки, маркировки или разделения других элементов управления. Статический контроль обычно не требует ввода и не обеспечивает вывода.

В окне списка отображается список элементов, таких как имена файлов, которые пользователь может просматривать и выбирать. Поле списка представлено классом CListBox . В окне списка с одним выбором пользователь может выбрать только один элемент. В окне списка с множественным выбором можно выбрать диапазон элементов. Когда пользователь выбирает элемент, он выделяется, и окно списка отправляет уведомление в родительское окно.

Поле со списком состоит из списка в сочетании со статическим элементом управления или элементом редактирования. он представлен классом CComboBox . Часть списка элемента управления может отображаться постоянно или может выпадать только тогда, когда пользователь выбирает стрелку раскрывающегося списка рядом с элементом управления.

Переключатель – это элемент управления, который отображается в виде точки, окруженной круглой рамкой. В действительности радиокнопка сопровождается одной или несколькими другими радиокнопками, которые появляются и ведут себя как группа.

Флажок – это элемент управления Windows, который позволяет пользователю устанавливать или изменять значение элемента как true или false.

Список изображений представляет собой коллекцию изображений одинакового размера, каждое из которых может быть указано по нулевому индексу. Списки изображений используются для эффективного управления большими наборами значков или растровых изображений. Списки изображений представлены классом CImageList .

Поле редактирования – это прямоугольное дочернее окно, в которое пользователь может вводить текст. Он представлен классом CEdit .

Rich Edit Control – это окно, в которое пользователь может вводить и редактировать текст. Тексту может быть назначено форматирование символов и абзацев, и он может включать встроенные объекты OLE. Он представлен классом CRichEditCtrl .

Групповое поле – это статический элемент управления, используемый для установки видимой или программной группы элементов управления. Элемент управления представляет собой прямоугольник, который группирует другие элементы управления вместе.

Элемент управления Spin Button (также известный как элемент управления «вверх-вниз») представляет собой пару кнопок со стрелками, которые пользователь может нажимать для увеличения или уменьшения значения, например положения прокрутки или числа, отображаемого в сопутствующем элементе управления. он представлен классом CSpinButtonCtrl .

Он управляет средствами управления обновлением.

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

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

Таймер – это непространственный объект, который использует повторяющиеся промежутки времени с компьютера или из вашего приложения. Чтобы работать, каждый промежуток времени, элемент управления отправляет сообщение операционной системе. В отличие от большинства других элементов управления, таймер MFC не имеет ни кнопки для его представления, ни класса. Чтобы создать таймер, вы просто вызываете метод CWnd :: SetTimer (). Этот вызов функции создает таймер для вашего приложения. Как и другие элементы управления, таймер использует идентификатор.

Элемент управления выбора даты и времени ( CDateTimeCtrl ) реализует интуитивно понятный и узнаваемый способ ввода или выбора конкретной даты. Основной интерфейс управления похож по функциональности на поле со списком. Однако если пользователь расширяет элемент управления, появляется элемент управления календаря месяца (по умолчанию), позволяющий пользователю указать конкретную дату. Когда дата выбрана, элемент управления календаря автоматически исчезает.

Если вам нужно отобразить изображение для вашего приложения, Visual C ++ предоставляет специальный элемент управления для этой цели.

Редактор изображений содержит обширный набор инструментов для создания и редактирования изображений, а также функции, помогающие создавать растровые изображения панели инструментов. Помимо растровых изображений, значков и курсоров, вы можете редактировать изображения в формате GIF или JPEG, используя команды в меню «Изображение» и инструменты на панели инструментов «Редактор изображений».

Ползунок управления (также известный как трекбар) представляет собой окно, содержащее ползунок и дополнительные отметки. Когда пользователь перемещает ползунок с помощью мыши или клавиш со стрелками, элемент управления отправляет уведомления с уведомлением об изменении. Есть два типа слайдеров – горизонтальные и вертикальные. Он представлен классом CSliderCtrl .

Полоса прокрутки – это графический элемент управления, с помощью которого непрерывный текст, изображения или что-либо еще можно прокручивать в двух направлениях вдоль элемента управления, щелкая стрелку. Этот элемент управления может принимать одно из двух направлений – горизонтальное или вертикальное. Он представлен классом CScrollBar .

Элемент управления Tree View – это окно, которое отображает иерархический список элементов, таких как заголовки в документе, записи в индексе или файлы и каталоги на диске. Каждый элемент состоит из метки и необязательного растрового изображения, и каждый элемент может иметь список связанных с ним подпунктов. Нажав на элемент, пользователь может развернуть и свернуть связанный список подэлементов. Он представлен классом CTreeCtrl .

Инкапсулирует функциональность элемента управления представления списка, который отображает коллекцию элементов, каждый из которых состоит из значка (из списка изображений) и метки. Он представлен классом CListCtrl . Элемент управления списком состоит из использования одного из четырех представлений для отображения списка элементов.

Статический элемент управления – это объект, который отображает информацию для пользователя без его или ее прямого вмешательства. Его можно использовать для отображения цветов, геометрической формы или изображения, такого как значок, растровое изображение или анимация.

Элемент управления анимацией – это окно, в котором отображается аудиоклип в формате AVI. AVI-клип – это серия растровых кадров, как в фильме. Элементы управления анимацией могут воспроизводить только простые AVI-клипы, и они не поддерживают звук. Он представлен классом CAnimateCtrl .

Кнопка – это объект, который пользователь щелкает, чтобы инициировать действие. Кнопочное управление представлено классом CButton .

Кнопка растрового изображения отображает изображение или рисунок и текст на его лице. Обычно это делается для того, чтобы сделать кнопку немного явной. Кнопка растрового изображения создается с использованием класса CBitmapButton , производного от CButton.

Командная кнопка – это расширенная версия обычной кнопки. Слева отображается зеленая иконка со стрелкой, за которой следует подпись обычного размера. Под основной подписью он может отображать другую меньшую подпись, которая служит подсказкой для предоставления дополнительной информации.

Статический элемент управления отображает текстовую строку, поле, прямоугольник, значок, курсор, растровое изображение или расширенный метафайл. Он представлен классом CStatic . Его можно использовать для маркировки, маркировки или разделения других элементов управления. Статический контроль обычно не требует ввода и не обеспечивает вывода.

В окне списка отображается список элементов, таких как имена файлов, которые пользователь может просматривать и выбирать. Поле списка представлено классом CListBox . В окне списка с одним выбором пользователь может выбрать только один элемент. В окне списка с множественным выбором можно выбрать диапазон элементов. Когда пользователь выбирает элемент, он выделяется, и окно списка отправляет уведомление в родительское окно.

Поле со списком состоит из списка в сочетании со статическим элементом управления или элементом редактирования. он представлен классом CComboBox . Часть списка элемента управления может отображаться постоянно или может выпадать только тогда, когда пользователь выбирает стрелку раскрывающегося списка рядом с элементом управления.

Переключатель – это элемент управления, который отображается в виде точки, окруженной круглой рамкой. В действительности радиокнопка сопровождается одной или несколькими другими радиокнопками, которые появляются и ведут себя как группа.

Флажок – это элемент управления Windows, который позволяет пользователю устанавливать или изменять значение элемента как true или false.

Список изображений представляет собой коллекцию изображений одинакового размера, каждое из которых может быть указано по нулевому индексу. Списки изображений используются для эффективного управления большими наборами значков или растровых изображений. Списки изображений представлены классом CImageList .

Поле редактирования – это прямоугольное дочернее окно, в которое пользователь может вводить текст. Он представлен классом CEdit .

Rich Edit Control – это окно, в которое пользователь может вводить и редактировать текст. Тексту может быть назначено форматирование символов и абзацев, и он может включать встроенные объекты OLE. Он представлен классом CRichEditCtrl .

Групповое поле – это статический элемент управления, используемый для установки видимой или программной группы элементов управления. Элемент управления представляет собой прямоугольник, который группирует другие элементы управления вместе.

Элемент управления Spin Button (также известный как элемент управления «вверх-вниз») представляет собой пару кнопок со стрелками, которые пользователь может нажимать для увеличения или уменьшения значения, например положения прокрутки или числа, отображаемого в сопутствующем элементе управления. он представлен классом CSpinButtonCtrl .

Он управляет средствами управления обновлением.

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

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

Таймер – это непространственный объект, который использует повторяющиеся промежутки времени с компьютера или из вашего приложения. Чтобы работать, каждый промежуток времени, элемент управления отправляет сообщение операционной системе. В отличие от большинства других элементов управления, таймер MFC не имеет ни кнопки для его представления, ни класса. Чтобы создать таймер, вы просто вызываете метод CWnd :: SetTimer (). Этот вызов функции создает таймер для вашего приложения. Как и другие элементы управления, таймер использует идентификатор.

Элемент управления выбора даты и времени ( CDateTimeCtrl ) реализует интуитивно понятный и узнаваемый способ ввода или выбора конкретной даты. Основной интерфейс управления похож по функциональности на поле со списком. Однако если пользователь расширяет элемент управления, появляется элемент управления календаря месяца (по умолчанию), позволяющий пользователю указать конкретную дату. Когда дата выбрана, элемент управления календаря автоматически исчезает.

Если вам нужно отобразить изображение для вашего приложения, Visual C ++ предоставляет специальный элемент управления для этой цели.

Редактор изображений содержит обширный набор инструментов для создания и редактирования изображений, а также функции, помогающие создавать растровые изображения панели инструментов. Помимо растровых изображений, значков и курсоров, вы можете редактировать изображения в формате GIF или JPEG, используя команды в меню «Изображение» и инструменты на панели инструментов «Редактор изображений».

Ползунок управления (также известный как трекбар) представляет собой окно, содержащее ползунок и дополнительные отметки. Когда пользователь перемещает ползунок с помощью мыши или клавиш со стрелками, элемент управления отправляет уведомления с уведомлением об изменении. Есть два типа слайдеров – горизонтальные и вертикальные. Он представлен классом CSliderCtrl .

Полоса прокрутки – это графический элемент управления, с помощью которого непрерывный текст, изображения или что-либо еще можно прокручивать в двух направлениях вдоль элемента управления, щелкая стрелку. Этот элемент управления может принимать одно из двух направлений – горизонтальное или вертикальное. Он представлен классом CScrollBar .

Элемент управления Tree View – это окно, которое отображает иерархический список элементов, таких как заголовки в документе, записи в индексе или файлы и каталоги на диске. Каждый элемент состоит из метки и необязательного растрового изображения, и каждый элемент может иметь список связанных с ним подпунктов. Нажав на элемент, пользователь может развернуть и свернуть связанный список подэлементов. Он представлен классом CTreeCtrl .

Инкапсулирует функциональность элемента управления представления списка, который отображает коллекцию элементов, каждый из которых состоит из значка (из списка изображений) и метки. Он представлен классом CListCtrl . Элемент управления списком состоит из использования одного из четырех представлений для отображения списка элементов.

MFC – Сообщения и События

Приложение состоит из различных объектов. В большинстве случаев на компьютере работает несколько приложений, и операционной системе постоянно предлагается выполнить некоторые задания. Поскольку может быть непредсказуемо представлено так много запросов, операционная система оставляет объектам право определять, что они хотят, когда они этого хотят, и какое поведение или результат они ожидают.

обзор

Операционная система Microsoft Windows не может предсказать, о каких типах запросов нужно было бы позаботиться одному объекту, и о каком типе назначения понадобился бы другой объект.

Чтобы управлять всеми этими назначениями и запросами, объекты отправляют сообщения.

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

Чтобы отправить сообщение, элемент управления должен создать событие.

Чтобы провести различие между ними, имя сообщения обычно начинается с WM_, что означает Window Message.

Название события обычно начинается с Вкл., Что указывает на действие.

Событие – это действие отправки сообщения.

Операционная система Microsoft Windows не может предсказать, о каких типах запросов нужно было бы позаботиться одному объекту, и о каком типе назначения понадобился бы другой объект.

Чтобы управлять всеми этими назначениями и запросами, объекты отправляют сообщения.

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

Чтобы отправить сообщение, элемент управления должен создать событие.

Чтобы провести различие между ними, имя сообщения обычно начинается с WM_, что означает Window Message.

Название события обычно начинается с Вкл., Что указывает на действие.

Событие – это действие отправки сообщения.

Карта сообщений

Поскольку Windows является операционной системой, ориентированной на сообщения, большая часть программирования для среды Windows включает обработку сообщений. Каждый раз, когда происходит событие, такое как нажатие клавиши или щелчок мыши, в приложение отправляется сообщение, которое затем должно обработать событие.

Чтобы компилятор управлял сообщениями, они должны быть включены в определение класса.

Макрос DECLARE_MESSAGE_MAP должен предоставляться в конце определения класса, как показано в следующем коде.

Чтобы компилятор управлял сообщениями, они должны быть включены в определение класса.

Макрос DECLARE_MESSAGE_MAP должен предоставляться в конце определения класса, как показано в следующем коде.

Фактические сообщения должны быть перечислены чуть выше строки DECLARE_MESSAGE_MAP.

Чтобы реализовать сообщения, вам нужно создать таблицу сообщений, которую использует ваша программа.

В этой таблице используются два макроса-разделителя;

Он начинается с BEGIN_MESSAGE_MAP и заканчивается макросами END_MESSAGE_MAP .

Макрос BEGIN_MESSAGE_MAP принимает два аргумента: имя вашего класса и класс MFC, из которого вы вывели свой класс, как показано в следующем коде.

Фактические сообщения должны быть перечислены чуть выше строки DECLARE_MESSAGE_MAP.

Чтобы реализовать сообщения, вам нужно создать таблицу сообщений, которую использует ваша программа.

В этой таблице используются два макроса-разделителя;

Он начинается с BEGIN_MESSAGE_MAP и заканчивается макросами END_MESSAGE_MAP .

Макрос BEGIN_MESSAGE_MAP принимает два аргумента: имя вашего класса и класс MFC, из которого вы вывели свой класс, как показано в следующем коде.

Давайте рассмотрим простой пример, создав новый проект Win32.

Win32 Project

Шаг 1 – Чтобы создать проект MFC, щелкните проект правой кнопкой мыши и выберите «Свойства».

Шаг 2 – В левом разделе нажмите Свойства конфигурации → Общие.

Шаг 3 – Выберите «Использовать MFC в Shared DLL» в разделе «Настройки проекта по умолчанию» и нажмите «ОК».

Шаг 4 – Нам нужно добавить новый исходный файл.

Шаг 5 – Щелкните правой кнопкой мыши по вашему проекту и выберите «Добавить» → «Новый элемент».

Шаг 6 – В разделе Шаблоны выберите Файл C ++ (.cpp).

Win Project

Шаг 7 – Нажмите Добавить, чтобы продолжить.

Шаг 8 – Теперь добавьте следующий код в файл * .cpp.

Сообщения Windows

Существуют различные типы сообщений Windows, такие как создание окна, показ окна и т. Д. Вот некоторые из наиболее часто используемых сообщений Windows.

Ниже приведены различные типы оконных сообщений.

Сообщение Запись в карте Описание
WM_ACTIVATE ON_WM_ACTIVATE () Каркас вызывает эту функцию-член, когда объект CWnd активируется или деактивируется.
WM_ACTIVATEA PP ON_WM_ACTIVATEAPP () Инфраструктура вызывает эту функцию-член для всех окон верхнего уровня активируемой задачи и для всех окон верхнего уровня деактивированной задачи.
WM_APPCOMM И ON_WM_APPCOMMAND () Каркас вызывает эту функцию-член, когда пользователь генерирует событие команды приложения.
WM_CANCELMODE WM_CANCELMODE () Каркас вызывает эту функцию-член, чтобы сообщить CWnd об отмене любого внутреннего режима.
WM_CHILDACTIVATE ON_WM_CHILDACTIVATE () Если объект CWnd является дочерним окном многодокументного интерфейса (MDI), OnChildActivate вызывается платформой, когда пользователь щелкает строку заголовка окна или когда окно активируется, перемещается или изменяется по размеру.
WM_CLIPBOAR DUPDATE ON_WM_CLIPBOARDUPDATE () Каркас вызывает эту функцию-член, когда содержимое буфера обмена изменилось.
WM_CLOSE ON_WM_CLOSE () Платформа вызывает эту функцию-член как сигнал о том, что CWnd или приложение должно завершиться.
WM_CONTEXTMENU ON_WM_CONTEXTMENU () Вызывается платформой, когда пользователь щелкнул правой кнопкой мыши (правой кнопкой мыши) в окне.
WM_COPYDATA ON_WM_COPYDATA () Эта функция-член вызывается платформой для копирования данных из одного приложения в другое.
WM_CREATE ON_WM_CREATE () Каркас вызывает эту функцию-член, когда приложение запрашивает создание окна Windows, вызывая функцию-член Create или CreateEx.
WM_CTLCOLOR ON_WM_CTLCOLOR () Каркас вызывает эту функцию-член, когда собирается нарисовать дочерний элемент управления.
WM_DELETEITEM ON_WM_DELETEITEM () Инфраструктура вызывает эту функцию-член, чтобы сообщить владельцу списка или поля со списком владельца, что список или поле со списком уничтожены или что элементы были удалены.
WM_DESTROY ON_WM_DESTROY () Фреймворк вызывает эту функцию-член, чтобы сообщить объекту CWnd, что он уничтожается.
WM_DRAWITEM ON_WM_DRAWITEM () Инфраструктура вызывает эту функцию-член для владельца элемента управления «кнопка рисования владельца», элемента управления со списком, элемента управления со списком или меню, когда визуальный аспект элемента управления или меню изменился.
WM_DROPFILES ON_WM_DROPFILES () Фреймворк вызывает эту функцию-член, когда пользователь отпускает левую кнопку мыши над окном, которое зарегистрировалось в качестве получателя удаленных файлов.
WM_ENABLE ON_WM_ENABLE () Каркас вызывает эту функцию-член, когда приложение меняет включенное состояние объекта CWnd. Синтаксис.
WM_HELPINFO ON_WM_HELPINFO () Обрабатывает справку F1 в приложении (используя текущий контекст).
WM_HOTKEY ON_WM_HOTKEY () Каркас вызывает эту функцию, когда пользователь нажимает общесистемную горячую клавишу.
WM_HSCROLL ON_WM_HSCROLL () Каркас вызывает эту функцию, когда пользователь щелкает горизонтальную полосу прокрутки окна.
WM_KEYDOWN ON_WM_KEYDOWN () Фреймворк вызывает эту функцию при нажатии несистемной клавиши.
WM_KEYUP ON_WM_KEYUP () Фреймворк вызывает эту функцию-член при освобождении несистемного ключа.
WM_KILLFOCUS ON_WM_KILLFOCUS () Каркас вызывает эту функцию-член непосредственно перед потерей фокуса ввода.
WM_LBUTTONDBLCLK ON_WM_LBUTTONDBLCLK () Каркас вызывает эту функцию, когда пользователь дважды щелкает левой кнопкой мыши.
WM_LBUTTONDOWN ON_WM_LBUTTONDOWN () Каркас вызывает эту функцию, когда пользователь нажимает левую кнопку мыши.
WM_LBUTTONUP ON_WM_LBUTTONUP () Каркас вызывает эту функцию, когда пользователь отпускает левую кнопку мыши.
WM_MBUTTONDBLCLK ON_WM_MBUTTONDBLCLK () Каркас вызывает эту функцию, когда пользователь дважды щелкает среднюю кнопку мыши.
WM_MBUTTONDOWN ON_WM_MBUTTONDOWN () Каркас вызывает эту функцию-член, когда пользователь нажимает среднюю кнопку мыши.
WM_MBUTTONUP ON_WM_MBUTTONUP () Каркас вызывает эту функцию, когда пользователь отпускает среднюю кнопку мыши.
WM_MENUSELECT ON_WM_MENUSELECT () Если объект CWnd связан с меню, OnMenuSelect вызывается платформой, когда пользователь выбирает пункт меню.
WM_MOUSEACTIVATE ON_WM_MOUSEACTIVATE () Каркас вызывает эту функцию-член, когда курсор находится в неактивном окне, и пользователь нажимает кнопку мыши.
WM_MOUSEHOVER ON_WM_MOUSEHOVER () Каркас вызывает эту функцию-член, когда курсор находится над клиентской областью окна в течение периода времени, указанного в предыдущем вызове TrackMouseEvent.
WM_MOUSEHWHEEL ON_WM_MOUSEHWHEEL () Инфраструктура вызывает этот элемент, когда текущее окно состоит из диспетчера окон рабочего стола (DWM), и это окно развернуто до максимума.
WM_MOUSELEAVE ON_WM_MOUSELEAVE () Фреймворк вызывает эту функцию, когда курсор покидает клиентскую область окна, указанного в предыдущем вызове TrackMouseEvent.
WM_MOUSEMOVE ON_WM_MOUSEMOVE () Каркас вызывает эту функцию при перемещении курсора мыши.
WM_MOVE ON_WM_MOVE () Каркас вызывает эту функцию-член после перемещения объекта CWnd.
WM_PAINT ON_WM_PAINT () Фреймворк вызывает эту функцию-член, когда Windows или приложение делает запрос на перекрашивание части окна приложения.
WM_SETFOCUS () ON_WM_SETFOCUS () Каркас вызывает эту функцию-член после получения фокуса ввода.
WM_SIZE () ON_WM_SIZE () Каркас вызывает эту функцию после изменения размера окна.
WM_TIMER ON_WM_TIMER () Каркас вызывает эту функцию-член после каждого интервала, указанного в функции-члене SetTimer, используемой для установки таймера.
WM_VSCROLL ON_WM_VSCROLL () Каркас вызывает эту функцию, когда пользователь щелкает вертикальную полосу прокрутки окна.
WM_WINDOWPOSCHANGED ON_WM_WINDOWPOSCHANGED () Каркас вызывает эту функцию-член, когда размер, положение или Z-порядок изменились в результате вызова функции-члена SetWindowPos или другой функции управления окнами.

Давайте посмотрим на простой пример создания окна.

WM_CREATE – Когда создается объект, называемый окном, фрейм, который создает объекты, отправляет сообщение, обозначенное как ON_WM_CREATE .

Шаг 1 – Чтобы создать ON_WM_CREATE, добавьте afx_msg int OnCreate (LPCREATESTRUCT lpCreateStruct); перед DECLARE_MESSAGE_MAP (), как показано ниже.

Шаг 2 – Добавьте ON_WM_CREATE () после BEGIN_MESSAGE_MAP (CMainFrame, CFrameWnd) и перед END_MESSAGE_MAP ()

Шаг 3 – Вот реализация OnCreate ()

Шаг 4 – Теперь ваш * .cpp файл будет выглядеть так, как показано в следующем коде.

Шаг 5 – Когда приведенный выше код скомпилирован и выполнен, вы увидите следующий вывод.

Сообщение

Шаг 6 – Когда вы нажмете ОК, появится главное окно.

Сообщение

Командные сообщения

Одной из основных функций графического приложения является представление элементов управления Windows и ресурсов, которые позволяют пользователю взаимодействовать с машиной. Примерами элементов управления, которые мы изучим, являются кнопки, списки, поля со списком и т. Д.

Одним из видов ресурсов, который мы представили в предыдущем уроке, является меню. Такие элементы управления и ресурсы могут инициировать свои собственные сообщения, когда пользователь щелкает их. Сообщение, исходящее от элемента управления Windows или ресурса, называется командным сообщением.

Давайте рассмотрим простой пример командных сообщений.

Чтобы предоставить вашему приложению возможность создавать новый документ, класс CWinApp предоставляет метод OnFileNew ().

Вот определение метода –

Сообщения клавиатуры

Клавиатура – это аппаратный объект, подключенный к компьютеру. По умолчанию он используется для ввода узнаваемых символов, букв и других символов в элементе управления. Каждая клавиша на клавиатуре отображает символ, букву или их комбинацию, чтобы указать, для чего клавиша может быть использована. Пользователь обычно нажимает клавишу, которая посылает сигнал программе.

У каждого ключа есть код, который операционная система может распознать. Этот код известен как код виртуального ключа .

Русские Блоги

MFC (Microsoft Foundation Classes, базовый класс Microsoft) представляет собой набор предопределенных классов, инкапсулирует Windows API, является объектно-ориентированным методом для программирования Windows.

  • Все имена, которые используют классы MFC, начинаются с C, например CView.

1. Простая программа MFC

1.1 Добавьте оператор #include, включающий заголовочный файл afxwin.h, поскольку этот файл содержит много определений классов MFC.

1.2 Получите два класса: класс приложения и класс окна

(1) Класс приложения: класс CWinApp

Объект этого типа включает в себя весь код, необходимый для запуска, инициализации, запуска и закрытия приложения, поэтому вам нужно получить собственный класс на основе CWinApp, чтобы получить собственное приложение.

(2) Класс окна: класс CFrameWnd

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

(3) После определения класса окна для приложения вы можете написать функцию InitInstance () в классе COurApp

1.3 Конечный продукт

2. Используйте MFC для написания программ для Windows

2.1 Основные понятия в МФЦ

  • Документ: документ представляет собой набор данных, который взаимодействует с пользователями в приложении. Документы не ограничиваются текстом, а представляют собой набор различных данных. Документ в программе определяется как объект класса документа. Класс документа является производным от класса CDocument в библиотеке MFC. Вам необходимо добавить элементы данных для хранения данных, требуемых приложением, и добавить функции-члены для поддержки обработки данных.
  • Представления. Представления предоставляют механизм для отображения части или всех данных, содержащихся в объекте документа.
  • Шаблон документа: заставьте документы, представления и окна структуры сотрудничать друг с другом.
  • Четыре основных класса в приложениях MFC: класс приложения (CMyApp), класс окна фрейма (CMyWnd), класс представления (CMy), класс документа (CMyDoc)

2.2 Создание приложения MFC

2.2.1 Создание программы MFC с использованием VS2017

(1) Выберите приложение MFC

(2) Тип приложения

  • Отдельный документ: программа, которая должна открывать только один документ за раз, окно приложения — это диалоговое окно, а не окно кадра
  • Несколько документов верхнего уровня: документ отображается в дочернем окне на рабочем столе
  • Поддержка просмотра документов: эта опция выбрана по умолчанию и получает встроенный код поддержки, если она не выбрана, за написание отвечает программист

(3) Свойства шаблона документа

Расширение файла, создаваемого программой дизайна, имя фильтра — это имя фильтра, которое отображается в диалоговых окнах «Открыть» и «Сохранить как», и в списке могут отображаться только файлы с расширением .txt.

(4) Сгенерированные классы

2.3 Классы, созданные программой анализа

Часто используемые вкладки анализа ресурсов: менеджер ресурсов, представление классов, представление ресурсов

Ключевые категории: класс приложения (App), класс окна фрейма (CMainFrame), класс документа (Doc), класс представления (View)

2.4 Конец

Работу приложения можно суммировать в 4 этапа:
(1) Создайте объект приложения theApp.
(2) Выполнить функцию WinMain (), предоставляемую MFC.
(3) WinMainO вызывает функцию InitInstance0, которая создает шаблон документа, окно основного фрейма, документ и представление.
(4) WinMain () вызывает функцию Run (), которая выполняет основной цикл обработки сообщений для получения и отправки сообщений Windows.

Интеллектуальная рекомендация

Реализация JavaScript Hashtable

причина Недавно я смотрю на «Структуру данных и алгоритм — JavaScript», затем перейдите в NPMJS.ORG для поиска, я хочу найти подходящую ссылку на библиотеку и записывать его, я могу исполь.

MySQL общие операции

jdbc Транзакция: транзакция, truncate SQL заявление Transaction 100 000 хранимая процедура mysql msyql> -определить новый терминатор,Пробелов нет mysql>delimiter // mysql> -создание хранимой .

Используйте Ansible для установки и развертывания TiDB

жизненный опыт TiDB — это распределенная база данных. Настраивать и устанавливать службы на нескольких узлах по отдельности довольно сложно. Чтобы упростить работу и облегчить управление, рекомендуетс.

Последняя версия в 2019 году: использование nvm под Windows для переключения между несколькими версиями Node.js.

С использованием различных интерфейсных сред вы можете переключаться между разными версиями в любое время для разработки. Например, развитие 2018 года основано наNode.js 7x версия разработана. Тебе эт.

Шаблон проектирования — Создать тип — Заводской шаблон

Заводская модель фабрикиPattern Решать проблему: Решен вопрос, какой интерфейс использовать принципСоздайте интерфейс объекта, класс фабрики которого реализуется его подклассом, чтобы процесс создания.

Похожие статьи