Иллюстрированный самоучитель по Visual Studio.Net


Диалог по управлению светом - часть 6


Введите в класс COGView новую public-переменную:

CPropDlg *m_pDlg; // Указатель на объект диалога

В начало файла заголовков OGView.h вставьте упреждающее объявление класса

CPropDlg:

class CPropDlg; // Упреждающее объявление

В конструктор COGView вставьте обнуление указателя:

m_pDlg =0; // Диалог отсутствует

Для обеспечения видимости класса CPropDlg дополните список директив препроцессора файла OGView.cpp директивой:

linclude "PropDlg.h"

Теперь можно ввести коды функции, которая создает диалог и запускает его вызовом функции Create (в отличие от DoModal для модального режима). Если происходит попытка повторного открытия диалога, то возможны два варианта развития событий:

  • новый диалог не создается, но окно существующего диалога делается активным;

  • команда открытия диалога недоступна, так как ее состояние зависит от значения указателя m_pDlg.

Реализуем первый вариант:

void COGView::OnEditProperties (void)

{

//====== Если диалог еще не открыт

if (!m_pDlg)

{

//=== Создаем его и запускаем в немодальном режиме

m_pDlg = new CPropDlg(this);

m_pDlg->Create(IDD_PROP);

}

else

// Иначе, переводим фокус в окно диалога

m_pDlg->SetActiveWindow();

}

Реакция на команду обновления пользовательского интерфейса при этом может быть такой:

void COGView::OnUpdateEditProperties(CCmdUI *pCmdUI)

{

pCmdUI->SetCheck (m_pDlg != 0);

}

Второй вариант потребует меньше усилий:

void COGView::OnEditProperties (void)

{

m_pDlg = new CPropDlg(this);

m_pDlg->Create(IDD_PROP); }

Но при этом необходима другая реакция на команду обновления интерфейса:

void COGView::OnUpdateEditProperties(CCmdUI *pCmdUI)

{

pCmdUI->Enable(m_pDlg == 0);

}

Выберите и реализуйте один из вариантов.

Панель управления

Завершая разработку приложения, вставьте в панель управления четыре кнопки

Для команд ID_EDIT_BACKGROUND, ID_EDIT_PROPERTIES, ID_VIEW_FILL И ID_VIEW_

QUAD. Заодно уберите из нее неиспользуемые нами кнопки с идентификаторами



Начало  Назад  Вперед