Compartir a través de


Interfaz IPublishingWizard (shobjidl.h)

Expone métodos para trabajar con el Asistente para impresión en línea, el Asistente para publicación web y el Asistente para agregar lugar de red. En Windows Vista, IPublishingWizard ya no admite el Asistente para publicación web ni el Asistente para impresión en línea.

Herencia

La interfaz IPublishingWizard hereda de IWizardExtension. IPublishingWizard también tiene estos tipos de miembros:

Métodos

La interfaz IPublishingWizard tiene estos métodos.

 
IPublishingWizard::GetTransferManifest

Obtiene un manifiesto de transferencia para una operación de transferencia de archivos realizada por un asistente para publicación, como el Asistente para impresión en línea o el Asistente para agregar lugar de red.
IPublishingWizard::Initialize

Inicializa el objeto Asistente para publicación con los archivos que se van a transferir, la configuración que se va a usar y el tipo de asistente que se va a crear.

Comentarios

El Asistente para impresión en línea es un asistente para pedir impresiones de fotos en línea. El uso de IPublishingWizard para trabajar con el Asistente para impresión en línea ya no se admite en Windows Vista.

El Asistente para agregar lugar de red permite al usuario crear un acceso directo a los recursos de red en Mi red Places (en Windows XP) o equipo (en Windows Vista).

El Shell de Windows proporciona un objeto Del Asistente para publicación que implementa IPublishingWizard e IWizardExtension. Los métodos de IPublishingWizard se usan para inicializar el tipo del asistente, establecer determinados atributos del asistente y recuperar un manifiesto de transferencia. Los métodos de IWizardExtension se usan para recuperar las páginas de extensión que componen el cuerpo del asistente seleccionado. Para crear instancias del objeto Asistente para publicación, llame a CoCreateInstance y use el identificador de clase (CLSID) CLSID_PublishingWizard y IID_IPublishingWizard como REFIID.

IPublishingWizard *pPublish = NULL;

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

Una vez creado una instancia del objeto Asistente para publicación, llame a IPublishingWizard::Initialize para inicializar el objeto Asistente para publicación.

Nota Los ejemplos siguientes no funcionarán en Windows Vista, ya que los métodos IPublishingWizard ya no admiten el Asistente para impresión en línea en 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.

Tenga en cuenta que IPublishingWizard::Initialize no muestra realmente el asistente. Para mostrar el Asistente para impresión en línea, debe crear una estructura PROPSHEETHEADER y, a continuación, modificar su miembro phpage para incluir la matriz de identificadores PROPSHEETPAGE devueltos por IWizardExtension::AddPages. IWizardExtension::AddPages se implementa mediante el mismo objeto del Asistente para publicación que implementa IPublishingWizard.

Si muestra el Asistente para impresión en línea, la marca PSH_NOMARGIN debe establecerse en el miembro dwFlags de la estructura PROPSHEETHEADER que contiene las páginas de extensión.

Además de las páginas de extensión recuperadas de IWizardExtension::AddPages, la matriz phpage debe incluir una página de inicio, una página de cancelación y una página de finalización, proporcionada por la aplicación. Cuando el usuario vuelve a salir de la extensión o cancela, o cuando la extensión termina de mostrar sus páginas, la extensión se comunica con el asistente que debe salir de la pila de páginas de extensión a una de estas páginas proporcionadas por la aplicación. La aplicación debe proporcionar una implementación de IWizardSite que controle esta comunicación. El sitio del objeto IPublishingWizard debe establecerse en la implementación de IWizardSite . La función IUnknown_SetSite se puede usar para establecer el sitio. Una vez que la aplicación haya especificado la configuración del asistente mediante IPublishingWizard::Initialize, rellena correctamente el miembro phpage de una estructura PROPSHEETHEADER y establece el sitio en una implementación de IWizardSite, el asistente puede mostrarse llamando a la función 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 Value
Cliente mínimo compatible Windows XP, Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado shobjidl.h

Consulte también

IWizardExtension

IWizardExtension::AddPages

IWizardSite

PROPSHEETHEADER

Objeto del Asistente para publicación