Поделиться через


Implementing a Dialog Box

2 Способа диалоговое окно добавление в проект библиотеки ATL: используйте мастер диалогового окна библиотеки ATL или добавить его вручную.

Диалоговое окно добавить с помощью мастера диалогового окна библиотеки ATL

В Диалоговое окно " добавление класса выберите объект диалогового окна библиотеку ATL для диалоговое окно добавление в проект библиотеки ATL. Заполните мастер диалогового окна библиотеки ATL, как соответствующее и нажмите кнопку Готово. Мастер добавит класс, производный от CAxDialogImpl в проект. Откройте представление ресурсов из меню Вид найдите диалоговое окно, и дважды щелкните его, чтобы открыть его в редакторе ресурсов.

Примечание

Если диалоговое окно выводится из CAxDialogImpl, то оно может размещения и управления ActiveX и Windows.Если вы не хотите издержки поддержки элементов управления ActiveX в классе диалогового окна, используйте CSimpleDialog или CDialogImpl.

Сообщение и обработчики событий можно добавлять к классу диалогового окна из представления класса. Дополнительные сведения см. в разделе Добавление обработчика сообщений ATL.

Добавление диалоговое окно вручную

Реализация диалоговое окно аналогично реализация окно. Необходимо создать производный класс от или CAxDialogImpl, CDialogImpl или CSimpleDialog и объявить сопоставление сообщений для обработки сообщения. Однако необходимо также указать идентификатор ресурса шаблона диалоговых окон в производном классе. Пользовательский класс должен иметь элемент данных с именем IDD, чтобы оставить это значение.

Примечание

При создании диалоговое окно с помощью мастера диалогового окна библиотеки ATL мастер автоматически добавляет элемент IDD как тип enum.

CDialogImpl позволяет реализовать диалоговое окно режимного или немодального то управления Windows узлов. CAxDialogImpl позволяет реализовать диалоговое окно режимного или немодального, размещение и управления ActiveX и Windows.

Для создания модального диалогового окна, создайте экземпляр производного CDialogImpl(или производный класс CAxDialogImpl-) и затем вызывает метод DoModal. Чтобы закрыть модального диалогового окна, вызовите метод EndDialog из обработчика сообщений. Для создания безрежимного диалогового окна, вызовите метод Создание вместо DoModal. Уничтожить безрежимное диалоговое окно, вызов DestroyWindow.

Тонуть события автоматически выполняется в CAxDialogImpl. Реализуйте обработчики сообщений диалогового окна, как обработчики в CWindowImpl- производный класс. Если возвращаемое значение сообщение- определенной, верните ее в качестве LRESULT. Возвращаемые значения LRESULT сопоставлены библиотеки ATL для правильной обработки диспетчером диалогового окна Windows. Дополнительные сведения см. в разделе исходный код для CDialogImplBaseT::DialogProc в atlwin.h.

Пример

Следующий класс реализует диалоговое окно:

class CMyDialog : public CDialogImpl<CMyDialog>
{
public:
   enum { IDD = IDD_MYDLG };

   BEGIN_MSG_MAP(CMyDialog)
      MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
      COMMAND_HANDLER(IDCANCEL, BN_CLICKED, OnBnClickedCancel)
   END_MSG_MAP()

   LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, 
      BOOL& /*bHandled*/)
   {
      // Do some initialization code
      return 1;
   }
public:
   LRESULT OnBnClickedCancel(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
};

См. также

Другие ресурсы

Классы окон ATL