Є два способи додати діалогове вікно до ATL проекту: за допомогою майстра ATL об'єкт або додати його вручну.
ATL об'єкт майстра (менюВставка , команда Об'єкт новий ATL ) виділити різні категорії, на панелі ліворуч, а потім двічі клацніть на правій панелі, щоб додати діалогове вікно до проекту ATL, об'єкт діалогове вікно . Заповнити у діалоговому вікні Властивості майстер ATL об'єкта , відповідно і натисніть кнопку ОК. ATL об'єкт майстер додає клас, отриманих від CAxDialogImpl до проекту і відкрито редактор ресурсів із шаблону діалоговому вікні.
Примітка Якщо у діалоговому вікні походить від CAxDialogImpl , його можна розмістити елементи керування ActiveX та Windows. Якщо ви не хочете накладні підтримка керування ActiveX у діалоговому вікні клас, використовувати CSimpleDialog або CDialogImpl замість.
Повідомлення та події обробників можна додавати у вашому класі діалогове вікно з ClassView так само, як до MFC-клас. У ClassView клацніть правою кнопкою миші клас і виберіть Додати обробника повідомлення Windows відкрити діалогове вікно нового повідомлення Windows та обробники подій . Для отримання додаткової інформації дивіться Додавання обробника повідомлення.
Щоб відкрити діалогове вікно нового повідомлення Windows та обробники подій в діалоговому вікні шаблон, клацніть правою кнопкою миші елемента керування в діалоговому вікні шаблон і виберіть команду події з контекстне меню. У проекті ATL діалоговому вікні клас буде виділено у вікні класу або об'єкт для обробки ; Беручи до уваги, для проекті MFC виділений елемент керування.
Впровадження у діалоговому вікні схожий на впровадження вікно. Отримати класі з CAxDialogImpl, CDialogImplабо CSimpleDialog і оголосити повідомлення карти для обробки повідомлень. Однак, вам потрібно також задати Ідентифікатор ресурсів шаблон діалогове вікно в похідних класів. Ваш клас повинен мати членом даних, який називається IDD провести це значення.
Примітка Під час створення діалогове вікно за допомогою майстра об'єкт ATL, майстер автоматично додає до IDD член enum -тип.
CDialogImpl дозволяє реалізувати на модальних або немодальною діалогове вікно, на якому Windows елементи керування. CAxDialogImpl дозволяє реалізувати на модальних або немодальною діалогове вікно, на якому елементи керування ActiveX та Windows.
Створити модальне діалогове вікно створити екземпляр ваші CDialogImpl-отриманих (або CAxDialogImpl-отриманих) класу а потім викликати DoModal методу. Щоб закрити модальне діалогове вікно, зателефонуйте EndDialog метод з обробник повідомлення. Щоб створити діалогове вікно немодальною, зателефонуйте метод Створення замість того, щоб DoModal. Щоб знищити діалогове вікно немодальною, телефонуйте DestroyWindow.
Якщо ваш діалоговому вікні об'єкт містить елементи керування ActiveX і обробку подій від цих елементів керування, потрібно буде консультувати і unadvise всі інтерфейси керування ActiveX. Це може бути зроблено, додавши наступні рядки коду, щоб ваш InitDialog функції:
AtlAdviseSinkMap (pMyDlg, TRUE)
Щоб unadvise будь-які елементи керування ActiveX, додайте наступні рядки коду, щоб ваш EndDialog функція (або функція викликається після закінчення діалоговому вікні об'єкта):
AtlAdviseSinkMap (pMyDlg, FALSE)
Здійснення діалоговому вікні повідомлення обробників, як інструменти в CWindowImpl-отриманих клас. Якщо значення, яке повертає повідомлення певної, повернути його, як на LRESULT . На повернувся LRESULT значення перетворюються на ATL належну обробку Windows діалогове вікно менеджера. Детальніше див вихідний код для CDialogImplBaseT::DialogProc в atlwin.h.
Приклад
Таких класів реалізує діалогове вікно:
клас CMyDialog: Громадська CDialogImpllt;CMyDialog >,...
{
готелю:
Enum {IDD = IDD_MYDIALOG};
BEGIN_MSG_MAP(CMyDialog)
MESSAGE_HANDLER (WM_INITDIALOG, OnInitDialog)
END_MSG_MAP()
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
/ / Зробити деякі ініціалізацію коду
повернення 1;
}
}