Класс CMultiPageDHtmlDialog
Многостраничное диалоговое окно последовательно отображает несколько HTML-страниц и обрабатывает события каждой страницы.
Синтаксис
class CMultiPageDHtmlDialog : public CDHtmlDialog
Участники
Открытые конструкторы
Имя | Описание |
---|---|
CMultiPageDHtmlDialog::CMultiPageDHtmlDialog | Создает объект диалогового окна DHTML с несколькими страницами (в стиле мастера). |
CMultiPageDHtmlDialog::~CMultiPageDHtmlDialog | Уничтожает объект диалогового окна DHTML с несколькими страницами. |
Замечания
Механизмом этого является карта событий DHTML и URL-адреса, которая содержит внедренные карты событий для каждой страницы.
Пример
В этом диалоговом окне с несколькими страницами предполагается три HTML-ресурса, определяющие простые функции мастера. Первая страница имеет кнопку "Далее", вторую кнопку "Предварительная" и "Далее" и третью кнопку "Предварительная". При нажатии одной из кнопок функция обработчика вызывает CDHtmlDialog::LoadFromResource для загрузки соответствующей новой страницы.
Соответствующие части объявления класса (в CMyMultiPageDlg.h):
class CMyMultiPageDlg : public CMultiPageDHtmlDialog
{
public:
// Declare the DHTML event handlers:
HRESULT OnPage1Next(IHTMLElement* pElement);
HRESULT OnPage2Next(IHTMLElement* pElement);
HRESULT OnPage2Back(IHTMLElement* pElement);
HRESULT OnPage3Back(IHTMLElement* pElement);
DECLARE_DHTML_URL_EVENT_MAP()
// rest of class declaration omitted
};
Соответствующие части реализации класса (в CMyMultipageDlg.cpp):
BEGIN_DHTML_URL_EVENT_MAP(CMyMultiPageDlg)
BEGIN_EMBED_DHTML_EVENT_MAP(CMyMultiPageDlg, Page1)
DHTML_EVENT_ONCLICK(_T("Next"), OnPage1Next)
END_EMBED_DHTML_EVENT_MAP()
BEGIN_EMBED_DHTML_EVENT_MAP(CMyMultiPageDlg, Page2)
DHTML_EVENT_ONCLICK(_T("Back"), OnPage2Back)
DHTML_EVENT_ONCLICK(_T("Next"), OnPage2Next)
END_EMBED_DHTML_EVENT_MAP()
BEGIN_EMBED_DHTML_EVENT_MAP(CMyMultiPageDlg, Page3)
DHTML_EVENT_ONCLICK(_T("Back"), OnPage3Back)
END_EMBED_DHTML_EVENT_MAP()
BEGIN_URL_ENTRIES(CMyMultiPageDlg)
URL_EVENT_ENTRY(CMyMultiPageDlg, _T("153"), Page1)
URL_EVENT_ENTRY(CMyMultiPageDlg, _T("154"), Page2)
URL_EVENT_ENTRY(CMyMultiPageDlg, _T("155"), Page3)
// Note: IDR_PAGE1 = 153, IDR_PAGE2 = 154, IDR_PAGE3 = 155
END_URL_ENTRIES()
END_DHTML_URL_EVENT_MAP(CMyMultiPageDlg)
HRESULT CMyMultiPageDlg::OnPage1Next(IHTMLElement *pElement)
{
UNREFERENCED_PARAMETER(pElement);
LoadFromResource(IDR_PAGE2);
return S_OK;
}
HRESULT CMyMultiPageDlg::OnPage2Next(IHTMLElement *pElement)
{
UNREFERENCED_PARAMETER(pElement);
LoadFromResource(IDR_PAGE3);
return S_OK;
}
HRESULT CMyMultiPageDlg::OnPage2Back(IHTMLElement *pElement)
{
UNREFERENCED_PARAMETER(pElement);
LoadFromResource(IDR_PAGE1);
return S_OK;
}
HRESULT CMyMultiPageDlg::OnPage3Back(IHTMLElement *pElement)
{
UNREFERENCED_PARAMETER(pElement);
LoadFromResource(IDR_PAGE2);
return S_OK;
}
Иерархия наследования
CDHtmlSinkHandlerBase2
CDHtmlSinkHandlerBase1
CDHtmlSinkHandler
CDHtmlEventSink
CMultiPageDHtmlDialog
Требования
Заголовок: afxdhtml.h
CMultiPageDHtmlDialog::CMultiPageDHtmlDialog
Создает объект диалогового окна DHTML с несколькими страницами (в стиле мастера).
CMultiPageDHtmlDialog(
LPCTSTR lpszTemplateName,
LPCTSTR szHtmlResID = NULL,
CWnd* pParentWnd = NULL);
CMultiPageDHtmlDialog(
UINT nIDTemplate,
UINT nHtmlResID = 0,
CWnd* pParentWnd = NULL);
CMultiPageDHtmlDialog();
Параметры
lpszTemplateName
Строка, завершающаяся значением NULL, которая является именем ресурса шаблона диалогового окна.
szHtmlResID
Строка, завершающаяся значением NULL, которая является именем ресурса HTML.
pParentWnd
Указатель на родительский или владелец объекта окна (типа CWnd), к которому принадлежит объект диалогового окна. Если значение NULL, родительское окно диалогового объекта устанавливается в главное окно приложения.
nIDTemplate
Содержит идентификатор ресурса шаблона диалогового окна.
nHtmlResID
Содержит идентификатор html-ресурса.
CMultiPageDHtmlDialog::~CMultiPageDHtmlDialog
Уничтожает объект диалогового окна DHTML с несколькими страницами.
virtual ~CMultiPageDHtmlDialog();