Configuração de página impressa

Este tópico descreve codificar exemplo que exibe uma caixa de diálogo Configurar página para que um usuário pode selecionar os atributos da página impressa, tais como o tipo de papel, origem do papel, orientação da página e as margens da página. O exemplo de código primeiro Inicializa uma estrutura PAGESETUPDLG e, em seguida, chama o PageSetupDlg função para exibir a caixa de diálogo.

Este exemplo define o sinalizador PSD_MARGINS in o sinalizadores membro e usa o rtMargin membro para especificar os valores de margem inicial. Ele define o sinalizador PSD_INTHOUSANDTHSOFINCHES para assegurar que a caixa de diálogo expresse dimensões de margem em milésimos de uma polegada.

Na entrada, o exemplo de código define o hDevMode e hDevNames Membros para NULL. Se a função retorna TRUE, a função usa esses membros para retornar as 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.

O exemplo também permite que um procedimento de gancho de PagePaintHook Personalizar o desenho do conteúdo da página de exemplo.

PAGESETUPDLG psd;    / / estrutura de caixa de diálogo comum
HWND hwnd;           / / janela do proprietário

/ / Inicializar PAGESETUPDLG
ZeroMemory (amp; psd, sizeof(PAGESETUPDLG));
PSD.lStructSize = sizeof(PAGESETUPDLG);
PSD.hwndOwner = hwnd;
PSD.hDevMode = NULL; / / Não se esqueça de livre ou armazenar hDevMode.
PSD.hDevNames = NULL; / / Não se esqueça de livre ou armazenar
                  hDevNames.
PSD.Sinalizadores = PSD_INTHOUSANDTHSOFINCHES | PSD_MARGINS | 
                  PSD_ENABLEPAGEPAINTHOOK; 
PSD.rtMargin.Top = 1000;
PSD.rtMargin.Left = 1250;
PSD.rtMargin.Right = 1250;
PSD.rtMargin.Bottom = 1000;
PSD.lpfnPagePaintHook = PaintHook;

se (PageSetupDlg(&psd) = = TRUE) {
    / / cheque papel tamanho e margem de valores aqui
} 

O exemplo a seguir mostra um procedimento de gancho de PagePaintHook de amostra que desenha o Retangular de margem na área da página de amostra:

Chamada de retorno BOOL PaintHook (hwndDlg HWND, UINT uMsg, WPARAM wParam, LPARAM lParam) {LPRECT lprc; 
    COLORREF crMargRect; 
    HDC hdc, hdcOld; 
 
    comutador (uMsg) {/ / desenho o Retangular de margem. 
        Case WM_PSD_MARGINRECT: hdc = wParam (HDC); 
            lprc = lParam (LPRECT); 
 
            / / Obter a cor de realçar do sistema. 
            crMargRect = GetSysColor(COLOR_HIGHLIGHT); 
 
            / / Criar uma caneta de traço-ponto da cor de realce do sistema e / / selecioná-lo para o DC da página de amostra. 
            hdcOld = SelectObject (hdc, CreatePen (PS_DASHDOT,. 5, crMargRect)); 
 
            / / Desenhar o Retangular de margem. 
            Retângulo (hdc, lprc-gt; esquerda, lprc - > top, lprc - > direita, lprc - > inferior); 
 
            / / Restauração a caneta anterior ao DC. 
            SelectObject (hdc, hdcOld); 
            retornar TRUE; 
 
        padrão: retorno FALSE; 
    } retornar TRUE; 
} 

 

Index