Поделиться через


Интерфейс 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 , чтобы инициализировать объект мастера публикации.

Примечание Приведенные ниже примеры не будут работать в Windows Vista, так как методы IPublishingWizard больше не поддерживают мастер печати через Интернет в Windows Vista.
 
// 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

См. также раздел

IWizardExtension

IWizardExtension::AddPages

IWizardSite

PROPSHEETHEADER

Объект мастера публикации