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