Опубликован: 17.08.2010 | Доступ: свободный | Студентов: 1000 / 59 | Оценка: 4.11 / 3.89 | Длительность: 29:38:00
Самостоятельная работа 19:

Модальные окна страниц свойств MFC

Аннотация: Создание заготовки диалогового приложения. Создание ресурса вкладки Find. Создание ресурса вкладки Result. Создание программной поддержки ресурсов. Создание строкового ресурса. Редактирование ресурса меню. Добавление обработчика пункта меню Find Book. Модификация стандартного окна свойств. Создание массива индексов отключенных вкладок. Обработка уведомляющих сообщений отключенных вкладок. Подключение вкладок. Динамическое изменение заголовка вкладки.
Файлы к данной лабораторной работе, Вы можете скачать здесь.

Это приложение демонстрирует некоторые из аспектов применения модальных окон свойств на примере разработки диалогового окна Find. Создаваемое диалоговое окно Find будет похоже на применяемое в других приложениях, за одним исключением: оно будет состоять из двух вкладок, в одной из которых будет задаваться запрос поиска (вкладка Find ), а результат поиска будет отражаться в другой вкладке (другой странице свойств - вкладке Result ).

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

  • Перейдите в свой каталог выполнения лабораторных работ
  • Создайте новый проект и назовите его ModalDemo

  • Вкладки мастера создания приложений заполните в соответствии с таблицей
    Таблица настройки мастера создания заготовки приложения
    Свойство проекта Значение
    Вкладка Application Type
    Application Type Single document
    Document/View architecture support Yes
    Resource language: Английский (США)
    Project style: MFC standard
    Use of MFC: Use MFC in a static library
    Вкладка Advanced Features
    Все сбросить!
    Остальные вкладки
    Оставить все установки по умолчанию!

Создание ресурса вкладки Find

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

  1. Раскрывающийся список Combo Box для выбора языка ( Language )
  2. Два поля редактирования Edit Control:
    • Автор ( Author )
    • Издатель ( Publisher )
  3. Три текстовых метки Static Text для перечисленных элементов управления
  4. Кнопку Button для начала поиска

Создадим данный ресурс:

  • Чтобы не забыть, смените режим построения приложения с Debug на Release
  • В панели Resource View оболочки щелкните в любом месте правой кнопкой мыши и выполните команду контекстного меню Add Resource
  • В окне Add Resource оболочки выберите шаблон диалогового ресурса как показано на рисунке и выполните кнопку New

  • В панели Resource View оболочки вызовите новый ресурс на редактирование и через панель Properties измените идентификатор ресурса на IDD_PROPPAGE_FIND
  • Измените значение свойства Caption на Find Book (это будет названием вкладки, а не заголовком диалогового окна)
  • Убедитесь в том, что свойства
    • Style установлено в Child (дочерний)
    • Border установлено в Thin
    • Disabled установлен в True
  • Поместите на форму диалогового ресурса элемент управления Combo Box и отредактируйте так
    • Присвойте его идентификатору ID значение IDC_COMBO_LANGUAGE
    • Установите свойство Type в значение Drop List
    • Свойство Data заполните некоторыми фиктивными данными в виде строки названий языков программирования, разделенных точкой_с_запятой, например, Visual C++/MFC;Microsoft C#/.NET;JScript.NET
  • Поместите на форму диалогового ресурса элемент Edit Control и отредактируйте так
    • Присвойте его идентификатору ID значение IDC_EDIT_AUTHOR
    • Установите свойство Disabled = True
  • Поместите на форму диалогового ресурса элемент Edit Control и отредактируйте так
    • Присвойте его идентификатору ID значение IDC_EDIT_PUBLISHER
    • Установите свойство Disabled = True
  • Поместите на форму диалогового ресурса текстовые метки и отредактируйте их свойства так
    • Caption = Language:
    • Caption = Author:
    • Caption = Publisher:
    • Align Text = Right
  • Выровняйте метки по правой границе, пользуясь панелью инструментов оболочки Dialog Editor
  • Поместите на форму диалогового ресурса кнопку Button и отредактируйте ее свойства так
    • ID = IDC_BUTTON_FIND
    • Caption = Find
  • Щелкните по кнопке Test Dialog панели инструментов Dialog Editor оболочки

Ресурс страницы свойств IDD_PROPPAGE_FIND должен выглядеть так


Тест не имеет системной кнопки закрытия окна, поэтому для его закрытия воспользуйтесь комбинацией клавиш Alt+F4.

Создание ресурса вкладки Result

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

Создадим данный ресурс.

  • В панели Resource View оболочки щелкните в любом месте правой кнопкой мыши и выполните команду контекстного меню Add Resource
  • В окне Add Resource оболочки выберите шаблон диалогового ресурса как показано на рисунке и выполните кнопку New

  • В панели Resource View оболочки вызовите новый ресурс на редактирование и через панель Properties измените идентификатор ресурса на IDD_PROPPAGE_RESULT
  • Измените значение свойства Caption на Results: %ld books found - это будет названием вкладки с отображением количества (спецификатор формата %ld - long decimal ) найденных книг
  • Убедитесь в том, что свойства
    • Style установлено в Child (дочерний)
    • Border установлено в Thin
    • Disabled установлен в True
  • Поместите на форму диалогового ресурса элемент управления List Box и отредактируйте так
    • Присвойте его идентификатору ID значение IDC_LIST_BOOKS
    • Установите свойство Horizontal Scroll = True
    • Установите свойство Vertical Scrollbar = True
  • Поместите на форму диалогового ресурса кнопку Button и отредактируйте ее свойства так
    • ID = IDC_BUTTON_GOTO
    • Caption = Go to
  • Щелкните по кнопке Test Dialog панели инструментов Dialog Editor оболочки

Ресурс страницы свойств IDD_PROPPAGE_RESULT должен выглядеть так


Для закрытия теста воспользуйтесь комбинацией клавиш Alt+F4.

Александр Даниленко
Александр Даниленко
Стоит Windows 8 Pro, Visual Studio 2010 Express Edition .