ООП / Приложение MFC
.docxСоздание простого MFC-приложения в Visual Studio
-
После открытия Visual Studio в основном меню выбираем Файл – Создать – Проект. На экране появляется диалоговое окно, в котором
выбираем Win32, Проект Win32, вводим имя проекта и нажимаем OK. В окне
жмем «Далее» и в серии диалогов выбираем установки, как на рисунках (вариант не единственный).
Жмем «Далее»
Жмем «Далее»
Жмем «Далее»
Жмем «Готово». Поковырявшись с полученными окнами можем добиться на экране примерно такой ситуации
Если теперь откомпилировать проект (создать решение) и запустить, то увидим окно
Которое ничего, естественно, не может.
Вернемся к проекту и научим его что-нибудь делать. Для начала щелкнем по центру надписи ресурса, изображающего главное окно программы. Выделится прямоугольник с надписью “Разместите здесь элементы управления диалоговым окном.”
Это один из управляющих элементов типа TextControl (Надпись). Можно открыть и посмотреть его свойства. Если окна со свойствами текущего (т.е. выделенного) элемента на экране нет, его можно вызвать с помощью правой кнопки мыши и всплывающего меню. Ниже вы видите окно со свойствами надписи. Эти свойства можно по-всякому менять. В частности в свойстве Подпись можно как угодно изменить текст самой надписи. Можно, наконец, удалить эту надпись со всеми ее свойствами. Так и поступим. Щелкнем по надписи и нажмем Del. Получим
Теперь надо открыть окно с элементами управления (Панель элементов)
И что-нибудь из этих элементов мышкой перетащить на форму окна. Перетащим кнопку Button и строковый редактор Edit Control. Расположим их как-нибудь. Например,
И займемся свойствами этой кнопки и поля. Щелкаем по кнопке. В окне со свойствами можем наблюдать
Изменим только два из этих свойств : подпись и ИД. У ИД сохраните начало IDC_, а дальше – что угодно, но латинскими буквами, цифрами и без пробелов. Например,
У поля редактирования изменим только ИД, установив его как IDC_Edit. Откомпилируем и опятьзапустим программу. Увидим
что по-прежнему никакой радости не доставляет. Наша ближайшая задача заставить новую кнопку и поле что-нибудь делать. Ну, например, чтобы при нажатии на кнопку в поле появилось: “Свободу Юрию Деточкину!” Это уже требует какого-то программирования. А программа, понятно, работает со всякого рода переменными. До сих пор редактировался файл ресурсов в чем-то сходный с картинкой. Программе объяснялось, какие объекты и где надо нарисовать. Для программирования следует завести переменные для каждого из интересующих нас объектов.
Технология работы с Visual Studio требует, чтобы создаваемые переменные включались в какой-нибудь класс. В настоящий момент уже имеется три класса:
CМойMFCDlg
CМойMFCDlg
CМойMFCDlgAutoProxy
Что такое класс? Это центральное понятие объектно-ориентированного программирования, которое является усовершенствованием обычных технологий программирования. Про классы и объекты написано много книг. Прочитав что-нибудь на эту тему любой желающий (сильно желающий) сможет понять детали. Считайте пока, что класс – это мешок, в котором собраны вместе какие-то переменные и способы управления этими переменными.
Допустим, что мы захотели нашу кнопку считать переменной MyButton, а поле редактирование – переменной MyEdit. Эти переменные надо поместить в один из классов. Причем лучше, чтобы они были в одном мешке. Тогда проще организовать их взаимодействие. В каком именно? Наиболее подходящим будет CМойMFCDlg (Мой диалог). Почему именно он? Шут его знает. Придумайте объяснение сами.
Для того, чтобы поместить придуманные нами переменные в класс CМойMFCDlg а заодно с этим связать их с изображениями кнопки и поля, находим окно классов
Щелкаем правой кнопкой по CМойMFCDlg и во всплывшем меню выбираем “ Добавить – Добавить переменную”. Появится диалог
В котором первым делом ставим галку “Переменная элемента управления”. Затем в выпадающем списке “Идентификатор элемента управления” находим наш ИД для кнопки. Наконец, в поле “Имя переменной” вносим придуманное имя MyButton. Жмем “Готово”. Затем то же самое делаем для поля ввода – присваиваем ему переменную MyEdit.
Если вам интересно, можете посмотреть текстовый файл “Мой MFCDlg.h”, который Visual Studio услужливо вам подсовывает. В самом его конце можно обнаружить добавленные переменные.
Теперь, наконец, можно и попрограммировать. Но еще несколько раз по мышке щелкнуть придется. Вспомним, что мы желаем. Мы хотим, чтобы на щелчок по нашей кнопке программа отреагировала, напечатав в окне редактора: “Свободу Юрию Деточкину!”
Вообще надо понимать, что программа в среде Windows после своего запуска большую часть времени ничего не делает. Она только ждет, когда пользователь на что-нибудь нажмет. И на каждое нажатие как-то реагирует. Эта реакция обычно происходит очень быстро. После чего программа опять ждет. Каждое нажатие – это событие. Реакция на нажатие – обработка этого события. Добавим еще, что событиями могут быть не только щелчки пользователя, но и масса других воздействий, которые способен ощутить компьютер. Программа под Window – это масса обработчиков различных событий. Если обычная консольная программа представляется как выстроенная цепочка команд, то здесь это множество таких программ. Каждая обрабатывает свое событие. Их очередность зависит только от того, в какой последовательности появляются эти события.
Так что нам надо написать обработчик нажатия на кнопку MyButton. Открываем редактор ресурсов. Например, в обозревателе решений открываем файлы ресурсов и дважды щелкаем по “Мой MFC.rc”. Дальше раскрываем пункт “Диалог” делаем двойной щелчок по его составляющему ресурсу IDD_MFC_DIALOG. Опять видим перед собой нашу форму с кнопкой и полем. Описанные выше манипуляции надо, естественно проделывать, если эта форма куда-нибудь делась. Так как в Visual Studio чертова прорва всяких элементов, то естественно, что что-нибудь все время теряется. Теперь щелкаем правой кнопкой мыши по нашей кнопке MyButton и во всплывшем меню выбираем пункт: “Добавить обработчик событий”. Появится окно, в котором устанавливаем
Оно, правда, и по умолчанию само так встанет. Если угодно, можно изменить имя функции-обработчика. Жмем “Добавить/править”. На экране должно появиться окно текстового редактора с файлом “Мой MFCDlg.cpp”. Покопайтесь в окнах на экране, если он сразу не бросается в глаза. В конце этого файла найдите строки
void CМойMFCDlg::OnBnClickedButton()
{
// TODO: добавьте свой код обработчика уведомлений
}
Вот, наконец, момент истины. Вместо зеленой строчки надо вставить свою программу, и по нажатию на кнопку эта программа выполнится. Пишем сюда
void CМойMFCDlg::OnBnClickedButton()
{
MyEdit.SetWindowTextW(L"Свободу Юрию Деточкину!");
}
Все! Откомпилируйте и запустите программу. Нажмте после запуска кнопку. Должны увидеть