Интерфейс IPublishingWizard (shobjidl.h)
Предоставляет методы для работы с мастером печати в интернете, мастером веб-публикации и мастером добавления сетевых мест. В Windows Vista IPublishingWizard больше не поддерживает мастер веб-публикации или мастер печати в Интернете.
Наследование
Интерфейс IPublishingWizard наследуется от IWizardExtension. IPublishingWizard также имеет следующие типы членов:
Методы
Интерфейс IPublishingWizard содержит следующие методы.
IPublishingWizard::GetTransferManifest Возвращает манифест передачи для операции передачи файлов, выполняемой мастером публикации, например мастером печати в Сети или мастером добавления сетевых мест. |
IPublishingWizard::Initialize Инициализирует объект мастера публикации с файлами для передачи, используемыми параметрами и типом создаваемого мастера. |
Комментарии
Мастер печати в Интернете — это мастер для заказа фотографий в Интернете. Использование IPublishingWizard для работы с мастером печати в Интернете больше не поддерживается в Windows Vista.
Мастер добавления сетевого узла позволяет пользователю создать ярлык для сетевых ресурсов в разделе "Моя сеть" Places (в Windows XP) или "Компьютер" (в Windows Vista).
Оболочка Windows предоставляет объект мастера публикации , который реализует IPublishingWizard и IWizardExtension. Методы IPublishingWizard используются для инициализации типа мастера, задания определенных атрибутов мастера и получения манифеста передачи. Методы IWizardExtension используются для извлечения страниц расширений, составляющих текст выбранного мастера. Чтобы создать экземпляр объекта мастера публикации, вызовите CoCreateInstance и используйте идентификатор класса (CLSID) CLSID_PublishingWizard и IID_IPublishingWizard в качестве REFIID.
IPublishingWizard *pPublish = NULL;
HRESULT hr = CoCreateInstance(CLSID_PublishingWizard,
NULL,
CLSCTX_INPROC_SERVER,
IID_IPublishingWizard,
(LPVOID*)&pPublish);
После создания экземпляра мастера публикации вызовите метод IPublishingWizard::Initialize , чтобы инициализировать объект мастера публикации.
// Initializing the Online Print Wizard
hr = pPublish->Initialize(pDataObject,
SHPWHF_NOFILESELECTOR,
L"InternetPhotoPrinting");
// pDataObject: A data object that represents files or folders to transfer.
// SHPWHF_NOFILESELECTOR: This flag must be set.
// L"InternetPhotoPrinting": Display the Online Print Wizard.
Обратите внимание, что IPublishingWizard::Initialize фактически не отображает мастер. Чтобы отобразить мастер печати в сети, необходимо создать структуру PROPSHEETHEADER , а затем изменить ее элемент phpage , чтобы включить массив дескрипторов PROPSHEETPAGE , возвращаемых IWizardExtension::AddPages. IWizardExtension::AddPages реализуется тем же объектом мастера публикации , который реализует IPublishingWizard.
При отображении мастера печати в сети флаг PSH_NOMARGIN должен быть установлен в элементе dwFlags структуры PROPSHEETHEADER , содержащей страницы расширения.
Помимо страниц расширения, полученных из IWizardExtension::AddPages, массив phpage должен включать начальную страницу, страницу отмены и страницу завершения, предоставляемые приложением. Когда пользователь выходит из расширения или отменяет его или когда расширение завершает отображение своих страниц, расширение сообщает мастеру о том, что оно должно перейти из стека страниц расширений на одну из этих страниц, предоставляемых приложением. Приложение должно предоставлять реализацию IWizardSite , которая обрабатывает этот обмен данными. Для сайта объекта IPublishingWizard необходимо задать вашу реализацию IWizardSite . Для задания сайта можно использовать функцию IUnknown_SetSite . После того как приложение укажет параметры мастера с помощью IPublishingWizard::Initialize, правильно заполнит элемент phpage структуры PROPSHEETHEADER и присвоит сайту реализацию IWizardSite, мастер может отображаться путем вызова функции PropertySheet .
/* This is example code demonstrating how to populate a PROPSHEETHEADER
structure and use it to display the Online Print Wizard.
This sample assumes that the PublishingWizard object has already
been instantiated and initialized elsewhere in the application. */
// Define the number of wizard pages that we expect to get from
// the Publishing Wizard object.
// The Online Print Wizard provides 6 predefined pages in Windows Vista,
// but provided 9 in Windows XP.
#if NTDDI_VERSION >= NTDDI_VISTA
#define NUMPAGES 6
#else
#define NUMPAGES 9
#endif
// Number of wizard pages supplied by the application in addition to
// the predefined pages supplied by the Online Print Wizard.
#define NUMNONEXTENSIONPAGES 3
// Array to hold the property sheets to display in the wizard,
// including both those returned by IPublishingWizard::AddPages()
// and those application-defined pages returned by IWizardSite methods.
HPROPSHEETPAGE hPropSheets[NUMPAGES + NUMNONEXTENSIONPAGES];
// Handles to the application-defined property sheets.
// This example assumes that they are initialized elsewhere in the application.
HPROPSHEETPAGE hPropSheetFinishPage = CreateFinishPage;
HPROPSHEETPAGE hPropSheetStartPage = CreateStartPage;
HPROPSHEETPAGE hPropSheetCanceledPage = CreateCanceledPage;
// Number of property sheets returned by IPublishingWizard::AddPages().
UINT uCount = 0;
INT_PTR retval = 0; // return value from PropertySheet
HRESULT hr;
// Property sheet header structure whose phpage member will receive
// the array of wizard pages retrieved from AddPages.
PROPSHEETHEADER psh;
psh.dwSize = sizeof(PROPSHEETHEADER);
// Set the PublishingWizard object's site to an IWizardSite implementation
// defined by your application.
hr = IUnknown_SetSite(pIPublish, (IUnknown *)pWizSite);
// Fill the hPropSheets array with the pages of the wizard.
if SUCCEEDED(hr)
{
hr = pIPublish->AddPages(&hPropSheets[0], NUMPAGES, &uCount);
}
if SUCCEEDED(hr)
{
// Define start, finish, and canceled pages elsewhere in your application.
// Here, these pages are added after the extension pages.
hPropSheets[uCount] = hPropSheetFinishPage;
hPropSheets[uCount + 1] = hPropSheetCanceledPage;
hPropSheets[uCount + 2] = hPropSheetStartPage;
// Assign the array of property sheets.
psh.phpage = hPropSheets;
// Number of extension pages from AddPages + # of your own pages.
psh.nPages = uCount + NUMNONEXTENSIONPAGES;
// The index into phpage where the first page to display is located.
psh.nStartPage = 0;
// PSH_NOMARGIN must be specified for the Online Print Wizard.
psh.dwFlags = PSH_AEROWIZARD | PSH_WIZARD | PSH_NOMARGIN;
psh.hwndParent = NULL;
psh.hInstance = NULL;
// Display the wizard.
PropertySheet(&psh);
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP, Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Целевая платформа | Windows |
Header | shobjidl.h |