Cтраница 2
Чтобы продолжить работу в главном окне, необходимо закрыть диалоговое окно. В этой главе рассмотрено создание немодальных диалоговых окон, позволяющих работать в главном окне программы одновременно с отображением диалогового окна. [16]
Необходимо определить обработчик сообщения OnCancel для класса диалогового окна. Если диалоговое окно содержит кнопку ОК. IDOK), то необходимо определить обработчик сообщения опок. Эти функции описаны во врезке Закрытие диалогового окна в этой главе. Однако для немодального диалогового окна названные функции вызывают функцию DestroyWindow, закрывающую диалоговое окно, и не должны вызывать обработчик сообщения базового класса. Версии функций базового класса OnCancel и ОпОК вызывают функцию EndDialog, скрывающую диалоговое окно, но не уничтожающую его. Заметьте: при использовании мастера ClassWizard для определения переменных класса диалогового окна функция ОпОК должна была бы вызвать функцию CWnd: : UpdateDate, передавая ей значение TRUE или вызывая ее без параметров, чтобы сохранить и проверить содержимое элементов управления. В модальном диалоговом окне эта задача выполняется версией функции ОпОК базового класса. [17]
При отображении модального диалогового окна главное окно программы блокируется, поэтому модальное окно необходимо закрыть перед продолжением работы в главном окне. А при отображении немодального диалогового окна доступ к главному окну программы не блокируется. Фокус ввода передается между немодальным диалоговым окном и главным. Таким образом, немодальное диалоговое окно служит вспомогательным окном и используется вместе с главным. [18]