Технологии программирования. Программирование графических интерфейс
.pdfРис. 4.8
7.Добавитьвкласс CChildView обработку двойного щелчка.
8.Отладить и выполнить программу.
4.6. Пример создания и использования диалоговых окон
1.В рабочей области создать проект как приложение MFC AppWizard(exe). ОтключитьподдержкуархитектурыDocument/View.
2.Используя редактор ресурсов, создать шаблон диалогового окна и разместить на нем элементы управления. Элементы управления перемещаются на окно из панели инструментов Controls, которая появляется при активизации редактора ресурсов Dialog. Если вы не видите эту панель, выберите в меню Tools команду Customize. В появившемся диалоговом окне перейдите на вкладку Toolbars, отметьте кнопку Controls, как показано на рис. 4.9.
3.Находясь в редакторе ресурсов Dialog, щелкнуть правой кнопкой мыши на шаблоне окна. В появившемся контекстнозависимом меню выбрать ClassWizard. Мастер предложит вам
81
создать класс диалогового окна и связать его с шаблоном окна. Ответьте «да» и создайте класс CMyDialog.
Рис. 4.9
4. Используя мастер ClassWizard на вкладке Member Variables, создать для каждого управляющего элемента перемен-
ную – член класса CMyDialog (рис. 4.10). class CMyDialog : public CDialog
{ |
|
//……………………… |
|
public: |
|
CListBox |
m_List1; |
CComboBox |
m_Combo1; |
CEdit |
m_Edit1; |
CButton |
m_BtnInput; |
CButton |
m_BtnClear; |
CButton |
m_BtnAdd; |
CButton |
m_BtnMove; |
//}}AFX_DATA |
|
//………… |
|
}; |
|
82
Рис. 4.10
5. Используя мастер ClassWizard на вкладке Message Maps,
создать для класса CMyDialog обработчик события
WM_INITDIALOG.
6. Написать обработчик этого события, в котором выполнить инициализацию управляющих элементов.
BOOL CMyDialog::OnInitDialog()
{
CDialog::OnInitDialog(); m_List1.AddString(“Иванов”); m_List1.AddString(“Иванов”); m_List1.AddString(“Петров”); m_List1.AddString(“Сидоров”); m_List1.AddString(“Котов”); m_List1.AddString(“Иванов”);
return TRUE;
}
83
7.Используя мастер ClassWizard на вкладке Message Maps, создать для класса CMyDialog обработчики событий от кнопок.
8.Написать код для этих обработчиков событий.
9.Добавить в меню команду «Диалог».
10.Записать обработчик этой команды
void CLab4_3App::OnDialog() {CMyDialog myDlg;
myDlg.DoModal();}
11. Отладить и выполнить программу.
4.7.Создание приложения типа Dialog based
1.В рабочей области lab04 создать проект lab4_4 как при-
ложение MFC AppWizard(exe).
2.На шаге 1 мастера MFC AppWizard выбрать тип приложения Dialog based. Этот тип приложения не поддерживает ар-
хитектуру Document/View (рис. 4.11).
Рис. 4.11
84
На шаге 2 снять отметки About box и ActiveX Controls (рис. 4.12).
Рис. 4.12
На шаге 3 оставьте отметки по умолчанию.
На шаге 4 мастер сообщает, что он создал два класса:
♦класс приложения CLab4_4App;
♦класс главного окна CLab4_4Dlg (рис. 4.13).
3. Если проанализировать созданный мастером код, можно увидеть, что главное окно – это диалоговое окно:
class CLab4_4Dlg : public CDialog
{
public:
CLab4_4Dlg(CWnd* pParent = NULL);
…
protected:
…
DECLARE_MESSAGE_MAP()
85
Рис. 4.13
};
BOOL CLab4_4App::InitInstance()
{
…
CLab4_4Dlg dlg; m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
…
return FALSE;
}
4.Разместить в диалоговом окне элементы управления. Элементы управления перемещаются на окно из панели инстру-
ментов Controls.
5.Используя мастер ClassWizard на вкладке Member Vari-
ables, создайте для каждого управляющего элемента перемен-
ную – член класса CLab5_4Dlg (рис. 4.14).
86
Рис. 4.14
6. Используя мастер ClassWizard на вкладке Message Maps, создать для класса CLab5_4Dlg обработчики событий от кнопок
(рис. 4.15, 4.16).
Рис. 4.15
87
Рис. 4.16
7.Написатье код для этих обработчиков событий.
8.Отладить и выполнить программу.
88
5. ДИАЛОГОВЫЕ ОКНА
5.1. Блоки диалога
Блоки диалога (dialog boxes) – это объекты Windows, ко-
торые представляют собой специальные окна, поддерживающие гибкие средства, при помощи которых пользователь может взаимодействовать с программой. Как правило, они включают дочерние окна (child), которые в контексте этого типа окон называются элементами управления.
Диалоговые окна представляют собой один из основных способов вывода и получения от пользователя информации в программах Windows. Они обеспечивают удобный и стандартный интерфейспрограммы спользователем.
Диалоговое окно – это дочернее окно главного окна приложения. В нем размещаются стандартные объекты – окна, которые называют элементами управления (controls).
Создание и использование блока диалога требуют одновременного наличия трех компонентов:
–шаблона блока диалога;
–программного кода, создающего и отображающего его на экране;
–диалоговой процедуры, которая обслуживает взаимодействия пользователя с блоком диалога.
Один из способов создания шаблона блока диалога – редактирование файла ресурсов. (*.rc)
Другой способ заключается в использование какого-либо визуального средства, например редактора ресурсов.
Для этого надо в меню Insert/Resource выбрать пункт Dialog и нажать кнопку New. Появится диалоговое окно в режиме конструктора.
Можно задать идентификатор и имя диалога (заголовок диалогового окна).
89
С помощью панели Controls можно вставить в диалоговое окно элементы управления.
Таким образом, создание шаблона блока диалога включает создание блока ресурсов, который описывает форму, размер и расположение на экране блока диалога и каждого из его внутренних элементов управления. Данный объект помещается в файл ресурсов приложения вместе с другими объектами (значками, меню, битовыми обрезами и т.д.). После того как шаблон сформирован, можно приступать к созданию программного кода, способного вызывать появление блока диалога на экране и выполнять его последующее удаление.
5.2. Класс CDialog и создание диалоговых окон
Библиотека MFC предоставляет специальный класс для создания и работы с блоками диалога – класс CDialog.
Основное назначение этого класса состоит в предоставлении интерфейса для управления блоками диалога. Использование класса CDialog позволяет создавать объекты обоих типов диалога – модальные и немодальные.
Для создания объекта диалогового класса на основе шаблона блока диалога, хранящегося в ресурсах, используется следующий конструктор:
CDialog :: CDialog (UINT nIDTemplate, CWnd
*pParentWnd=NULL);
nIDTemplate – номер идентификационного ресурса, pParentWnd – указатель на объект родителя или владельца,
которому принадлежит объект блока диалога.
Следующим шагом является создание собственно блока диалога Windows и его отображения.
Для создания модального блока диалога и присоединения его к объекту CDialog вызывается метод
virtual int CDialog :: DoModal();
90