Ler em inglês

Compartilhar via


Interface IPublishingWizard (shobjidl.h)

Expõe métodos para trabalhar com o Assistente de Impressão Online, o Assistente de Publicação na Web e o Assistente para Adicionar Local de Rede. No Windows Vista, o IPublishingWizard não dá mais suporte ao Assistente de Publicação na Web ou ao Assistente de Impressão Online.

Herança

A interface IPublishingWizard herda de IWizardExtension. IPublishingWizard também tem esses tipos de membros:

Métodos

A interface IPublishingWizard tem esses métodos.

 
IPublishingWizard::GetTransferManifest

Obtém um manifesto de transferência para uma operação de transferência de arquivo executada por um assistente de publicação, como o Assistente de Impressão Online ou o Assistente para Adicionar Local de Rede.
IPublishingWizard::Initialize

Inicializa o objeto Assistente de Publicação com os arquivos a serem transferidos, as configurações a serem usadas e o tipo de assistente a ser criado.

Comentários

O Assistente de Impressão Online é um assistente para ordenar impressões de fotos online. O uso do IPublishingWizard para trabalhar com o Assistente de Impressão Online não tem mais suporte no Windows Vista.

O Assistente para Adicionar Local de Rede permite que o usuário crie um atalho para recursos de rede em Meu Places de Rede (no Windows XP) ou Computador (no Windows Vista).

O Shell do Windows fornece um objeto do Assistente de Publicação que implementa IPublishingWizard e IWizardExtension. Os métodos de IPublishingWizard são usados para inicializar o tipo do assistente, definir determinados atributos do assistente e recuperar um manifesto de transferência. Os métodos de IWizardExtension são usados para recuperar as páginas de extensão que compõem o corpo do assistente selecionado. Para instanciar o objeto Assistente de Publicação, chame CoCreateInstance e use o CLSID_PublishingWizard de identificador de classe (CLSID) e IID_IPublishingWizard como REFIID.

IPublishingWizard *pPublish = NULL;

HRESULT hr = CoCreateInstance(CLSID_PublishingWizard, 
                              NULL,
                              CLSCTX_INPROC_SERVER, 
                              IID_IPublishingWizard, 
                              (LPVOID*)&pPublish);

Depois que o objeto Assistente de Publicação tiver sido instanciado, chame IPublishingWizard::Initialize para inicializar o objeto Assistente de Publicação.

Nota Os exemplos abaixo não funcionarão no Windows Vista, pois os métodos IPublishingWizard não dão mais suporte ao Assistente de Impressão Online no 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.

Observe que IPublishingWizard::Initialize não exibe o assistente. Para exibir o Assistente de Impressão Online, você deve criar uma estrutura PROPSHEETHEADER e modificar seu membro phpage para incluir a matriz de identificadores PROPSHEETPAGE retornados por IWizardExtension::AddPages. IWizardExtension::AddPages é implementado pelo mesmo objeto do Assistente de Publicação que implementa IPublishingWizard.

Se estiver exibindo o Assistente de Impressão Online, o sinalizador PSH_NOMARGIN deverá ser definido no membro dwFlags da estrutura PROPSHEETHEADER que contém as páginas de extensão.

Além das páginas de extensão recuperadas de IWizardExtension::AddPages, a matriz phpage deve incluir uma página inicial, uma página de cancelamento e uma página de término, fornecida pelo aplicativo. Quando o usuário faz o backup ou cancela a extensão ou quando a extensão termina de exibir suas páginas, a extensão se comunica com o assistente que ele deve navegar para fora da pilha de páginas de extensão para uma dessas páginas fornecidas pelo aplicativo. Seu aplicativo deve fornecer uma implementação do IWizardSite que lida com essa comunicação. O site do objeto IPublishingWizard deve ser definido como sua implementação IWizardSite . A função IUnknown_SetSite pode ser usada para definir o site. Depois que o aplicativo tiver especificado as configurações do assistente usando IPublishingWizard::Initialize, preencha corretamente o membro phpage de uma estrutura PROPSHEETHEADER e defina o site como uma implementação de IWizardSite, o assistente poderá ser exibido chamando a função 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);
}

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP, Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho shobjidl.h

Confira também

IWizardExtension

IWizardExtension::AddPages

IWizardSite

PROPSHEETHEADER

Objeto Assistente de Publicação