Итак, первым этапом работы с диалоговыми панелями является создание в файле ресурсов приложения шаблона новой диалоговой панели с каким-либо идентификатором (например, IDD_DIALOG1) и изменение его для конкретных целей (например, добавление поля редактирования с идентификатором IDC_EDIT1 и кнопки с идентификатором IDC_CLEAR).
Затем при помощи средства ClassWizard можно создать класс диалога (например, CDlg), производный от базового класса CDialog и организующий работу диалоговой панели (ClassWizard сохраняет определение и реализацию этого класса в файлах с расширениями *.cpp и *.h).
При помощи инструментов ClassWizard можно добавить в класс диалоговой панели заготовки методов-обработчиков оконных сообщений, сообщений от органов управления (например, нажатие на кнопки “OK”, “Cancel” и “Clear”) и др. Для обеспечения процесса обмена данными средствами ClassWizard можно связать элементы управления с переменными (например поле редактирования с идентификатором IDC_EDIT1 с переменной str класса CString).
Класс диалоговой панели и его реализация
В итоге выполнения перечисленных действий по созданию класса диалога средство ClassWizard сгенегрирует следующие файлы:
Файл dlg.h // dlg.h : header file //
#include "resource.h"
///////////////////////////////////////////////////////////////////////////// // CDlg dialog
class CDlg : public CDialog { // Construction public: CDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data //{{AFX_DATA(CDlg) enum { IDD = IDD_DIALOG1}; CString m_Str; //}}AFX_DATA
// Implementation protected: // DDX/DDV support virtual void DoDataExchange(CDataExchange* pDX);
// Generated message map functions //{{AFX_MSG(CDlg) afx_msg void OnClickedClear(); virtual void OnCancel(); virtual void OnOK(); virtual BOOL OnInitDialog(); //}}AFX_MSG DECLARE_MESSAGE_MAP() };
Файл dlg.cpp // dlg.cpp : implementation file // #include <afxwin.h> #include "resource.h" #include "dlg.h"
#ifdef _DEBUG #undef THIS_FILE static char BASED_CODE THIS_FILE[] = __FILE__; #endif