Usando a folha de propriedades de impressão

[Esta é a documentação preliminar e estão sujeitos a alterações.]

Este tópico descreve codificar exemplo que exibe um folha de propriedades de impressão para que um usuário pode selecionar opções para impressão de um documento. O exemplo de código primeiro aloca e Inicializa uma estrutura PRINTDLGEX , em seguida, chama a função PrintDlgEx para exibir a folha de propriedades.

O exemplo de código define o Sinalizar de PD_RETURNDC na sinalizadores membro da estrutura PRINTDLG . Isso faz com que a função PrintDlgEx retornar um identificador de contexto de dispositivo para a impressora selecionada no membro hDC . Você pode usar o identificador em funções tais como DrawText que processar saída enviada para a impressora.

Na entrada, o exemplo de código define o hDevMode e hDevNames Membros para NULL. Se a função retorna S_OK, esses membros retornam alças para DEVMODE de DEVNAMES estruturas contendo a entrada do usuário e informações sobre a impressora. Você pode usar essas informações para preparar a saída a ser enviada para a impressora selecionada.

Depois de terminada a operação de impressão, o código de exemplo libera os buffers de DEVMODE de DEVNAMES e chamadas a função de DeleteDC para excluir o contexto de dispositivo.

HRESULT DisplayPrintPropertySheet (
    HWND hWnd / / janela que possui a folha de propriedades
)
{
HRESULT hResult;
LPPRINTDLGEX pPDX = NULL;
LPPRINTPAGERANGE pPageRanges = NULL;

/ / Alocar a estrutura PRINTDLGEX.

pPDX = GlobalAlloc (LPPRINTDLGEX) (GPTR, sizeof(PRINTDLGEX));
se (! pPDX)
    retornar E_OUTOFMEMORY;

/ / Alocar uma matriz de PRINTPAGERANGE estruturas.

pPageRanges = (LPPRINTPAGERANGE) GlobalAlloc (GPTR, 10 * sizeof(PRINTPAGERANGE));
se (! pPageRanges)
    retornar E_OUTOFMEMORY;

/ / Inicializar a estrutura PRINTDLGEX.

pPDX-gt; lStructSize = sizeof(PRINTDLGEX);
pPDX - > hwndOwner = hWnd;
pPDX - > hDevMode = NULL;
pPDX - > hDevNames = NULL;
pPDX - > hDC = NULL;
pPDX - > Flags = PD_RETURNDC | PD_COLLATE;
pPDX - > Flags2 = 0;
pPDX - > ExclusionFlags = 0;
pPDX - > nPageRanges = 0;
pPDX - > nMaxPageRanges = 10;
pPDX - > lpPageRanges = pPageRanges;
pPDX - > nMinPage = 1;
pPDX - > nMaxPage = 1000;
pPDX - > nCopies = 1;
pPDX - > hInstance = 0;
pPDX - > lpPrintTemplateName = NULL;
pPDX - > lpCallback = NULL;
pPDX - > nPropertyPages = 0;
pPDX - > lphPropertyPages = NULL;
pPDX - > nStartPage = START_PAGE_GENERAL;
pPDX - > dwResultAction = 0;

/ / Invocar a folha de propriedades de impressão.

hResult = PrintDlgEx(pPDX);

se ((hResult = = S_OK) & &
           pPDX - > dwResultAction = = PD_RESULT_PRINT) {

/ / Usuário clicou no botão Imprimir, assim
    / / use o DC e outras informações retornadas na / / estrutura PRINTDLGEX para imprimir o documento

}

se (pPDX - > hDC! = NULL) DeleteDC (pPDX - > hDC);
se (pPDX - > hDevMode! = NULL) GlobalFree (pPDX - > hDevMode); 
se (pPDX - > hDevNames! = NULL) GlobalFree (pPDX - > hDevNames); 

retornam hResult;
} 

Index