Читайте также:
|
|
Процедура создания и использования немодальной диалоговой панели несколько отличается от процедуры создания модальной диалоговой панели.
Как и в случае с модальной диалоговой панелью, в первую очередь необходимо создать шаблон диалоговой панели и добавить его в файл ресурсов приложения. Затем нужно создать класс CDlg, управляющий диалоговой панелью, - класс диалоговой панели. Этот класс наследуется непосредственно от базового класса CDialog. Затем можно модифицировать шаблон и класс панели для нужд приложения.
В классе немодального диалога следует переопределить метод Create базового класса CDialog следующим образом:
void CDlg::Create(CWnd* pParent)
{ CDialog::Create(IDD,pParent); } // Вызов метода базового класса Parent=pParent; - окно-родитель
Предварительно в класс диалога необходимо добавить элемент Parent - указатель на родительский объект, например, CWnd *Parent - указатель на родительское окно. Если родительский объект не окно, то можно добавить в метод Create параметр, отвечающий за передачу указателя на родительский объект, и присвоить его переменной Parent, объявив его в определении класса как указатель на объект соответствующего типа. Указатель на родительский объект позволяет при необходимости вызывать для родительского объекта методы его класса непосредственно из методов класса диалога, что обеспечивает связь немодального диалога и его родительского объекта.
Метод Create возвращает управление сразу после отображения на экране диалоговой панели. Он возвращает ненулевое значение, если создание диалоговой панели завершилось успешно, и нуль в противном случае.
При помощи ClassWizard в классе CDlg также следует создать заготовки методов-обработчиков сообщений от кнопок IDOK(OnOK) и IDCANCEL (OnCancel),для сообщения WM_DESTROY (OnDestoy).
В момент создания объекта класса CDlg диалоговая панель как окно еще не создана и не появляется на экране. Для этого надо вызвать метод Create класса CDlg. Если диалоговая панель имеет стиль WS_VISIBLE, то она сразу появляется на экране. В противном случае для этого надо вызвать метод ShowWindow. Итак, в методе, который вызывает немодальный диалог (например, в методе-обработчике какого-либо сообщения для окна приложения), следует проверить, не отображается ли уже эта диалоговая панель, а затем создать ее методом Create класса CDlg:
if(Dlg.GetSafeHwnd()==NULL)
Dlg.Create(this);
Чтобы закрыть немодальную диалоговую панель, можно воспользоваться методом DestroyWindow:
if(Dlg.GetSafeHwnd()!=NULL)
Dlg.DestroyWindow();
Дата добавления: 2015-09-03; просмотров: 71 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Подготовительные работы и допуск к работе | | | Схема последовательного технологического процесса |