Лабораторная работа №7 по VisualC++ 2005
"Создание диалогового окна когда главным является «Документ»"
Составил доц. Авраменко В.В.
1 Постановка задачи
В пункт меню File добавить подпункт «Show Dialog…», при выборе которого на экране появляется диалоговое окно. В этом окне помимо Ok и Cancel должна быть стартовая кнопка и текстовое окно. При нажатии стартовой кнопки в текстовом окне должен появиться определённый текст, который при нажатии кнопки Ok должен воспроизвестись в клиентском окне.
2 Общие указания
2.1 Создание пункта меню и обработчика события
1)
Start Page.
Create:Project.
Выбрать тип проекта (Project types) MFC, шаблон- MFC Application,
Name- dia.
2) В окне Application Type выбрать Single document. Снять флажок Use Unicode Libraries. Щёлкнуть на Finish.
3) Добавить в меню File команду Show Dialog… Точки указывают, что происходит вызов именно диалогового окна ( это обозначение является стандартным) . Для этого в Solution Explorer выбрать вкладку Resource View.
Открыть папку dia и затем dia.rc (ресурсы). Открыть папку Menu и в ней дважды щёлкнуть по идентификатору главного окна IDR_MAINFRAME.
В окне редактора появляются пункты меню. Меню для File – раскрыто. Выделить в нём print и нажать insertnew.
Выше print появляется пустая строка. Занести в неё название пункта -
Show Dialog…Нажать Enter. Автоматически этот пункт меню получает идентификатор ID_FILE_ SHOWDIALOG . Это имя можно увидеть в свойствах (properties) для данного пункта в строке ID (identificator).
5) Создать обработчик команды Show Dialog…
Для этого выделить пункт меню Show Dialog… , вызвать контекстное меню и выбрать в нём Add Event Handler (добавить обработчик события).
Появляется окно
В Message type оставить COMMAND, а в списке классов (Class List) – CdiaView.
В окне Function handler name находится имя OnFileShowdialog обработчика события.
Щёлкнуть на кнопке Add and Edit .
В файле diaView.cpp появится заготовка функции- обработчика:
void CdiaView::OnFileShowdialog()
{
// TODO: Add your command handler code here
}
2.2 Создание диалогового окна
1) Выбрать вкладку Resource View. Выделить Dialog. Вызвать контекстное меню, а в нём- Insert Dialog .
В результате будет запущен редактор диалогов, который отобразит диалоговое окно. В нем уже имеются кнопки Ok и Cancel. У этого окна заглавие Dialog, а имя по умолчанию- IDD_DIALOG1 (см. для него Properties строка ID). В него нужно добавить кнопку и текстовое окно.
Добавление дополнительных элементов можно выполнить двумя способами. Можно просто брать нужный элемент управления из палитры Toolbox и перетаскивать в позицию, где желательно его разместить. А можно щёлкнуть на элементе управления из списка, чтобы выбрать его, а затем щёлкнуть на поле диалогового окна , куда нужно разместить. Когда элемент появится там, его можно перемещать и изменять размеры.
У каждого элемента управления имеется имя по умолчанию. Его можно увидеть в строке ID окна Properties.
2) Добавить в диалоговое окно Dialog кнопку (Button1). Затем вызвать окно Properties (свойства) и в строке Caption ввести текст: «Нажми меня!».
3) Добавить в диалоговое окно управляющий элемент- текстовое окно. В списке Toolbox этот элемент называется ab| Edit Control. По умолчанию его идентификатор IDC_EDIT1.
2.3 Создание класса диалогового окна
1) Выделить диалоговое окно для того, чтобы оно было в фокусе.
Выбрать в главном меню пункт Project/Add Class. Появляется окно. В строку class name ввести имя класса, например, Dlg. В окне Base class (базовый класс) автоматически появилось имя базового класса CDialog.
Нажать Finish. В списке классов появился класс Dlg. Если выбрать вкладку Solution Explorer, то можно увидеть, что появились файлы Dlg.h и Dlg.cpp.
2.4 Связывание методов с элементами диалоговых окон
Ставится задача связать методы созданного класса Dlg с элементами управления диалогового окна Dialog. Речь идёт о создании обработчиков событий.
2.4.1 Обработчик нажатия стартовой кнопки «Нажми меня!»
Выделить кнопку «Нажми меня!», вызвать контекстное меню и в нём щёлкнуть по Add Event Handler. В появившемся окне в Message type выбрать BN_CLICKED, а в списке классов (Class list) выбрать класс Dlg.
Нажать кнопку Add and Edit. В результате будет создан обработчик OnBnClickedButton1 (). Его прототип размещается в файле Dlg.h и имеет вид
public:
afx_msg void OnBnClickedButton1();
Следует обратить внимание на строку символов (префикс) afx_msg. Это слово стоит перед обработчиком, чтобы выделить его из других членов- функций.Оно преобразуется препроцессором в пробел. Следует знать, что члены- функции, обьявленные в базовом классе CWnd, имеют префикс afx_msg.
В файле Dlg.cpp размещается заготовка обработчика события- нажатия стартовой кнопки «Нажми меня!».
void Dlg::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here
}
В этом обработчике нужно запрограммировать вывод определенного текста в клиентскую область окна при нажатии стартовой кнопки «Нажми…». А для этого у созданного класса Dlg должен быть элемент данных типа строки символов. Чтобы создать этот элемент, нужно выделить текстовое окно, вызвать контекстное меню и выбрать в нем Add Variable.В открывшемся окне установить доступ public, в строке Category выбрать Value. При этом автоматически установится тип переменной CString.Ввести переменную m_text.
Теперь есть всё необходимое, чтобы конкретизировать содержание обработчика нажатия стартовой кнопки.
void Dlg::OnBnClickedButton1()
{
m_text=" Текст в диалоговом окне ";// m_text - элемент данных класса Dlg, а обработчик - метод этого //же класса.
UpdateData(false);// Метод занесения в текстовое окно.
// false означает, что IDC_EDIT1=m_text;
//идентификатору текстового окна присваивается m_text.
//true означает m_text=IDC_EDIT1т.е.считывание из окна
// TODO: Add your control notification handler code here
}
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.