Класс CDialog является наследником класса CWnd, то есть наследует все стандартные свойства обычных окон. Поэтому о событиях в диалоговом окне программа узнает через тот же самый механизм обмена сообщениями. Правда, обработка сообщений уже не ориентируется на главное окно программы. Напротив, каждое окно должно иметь свою собственную очередь сообщений и собственные обработчики.
Класс диалогового окна с объявлением карты сообщений:
h: class CSampleDialog: public CDialog
[public: void OnClose ();
CSampleDialog (UINT id, CWnd * Owner): CDialog (id, Owner) []
cpp: DECLARE_MESSAGE_MAP () ];
BEGIN_MESSAGE_MAP(CSampleDialog,CDialog)
ON_COMMAND(IDC_BUTTON1,OnClose)
END_MESSAGE_MAP()
void CSampleDialog::OnClose()
[SendMessage(WM_CLOSE);]
Иногда состояние элементов окна необходимо задавать перед выводом диалогового окна на экран.
BOOL CSampleDialog :: OnInitDialog ()
[CDialog :: OnInitDialog ();
..................] // Здесь размещают инициализацию элементов управления