[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;
}