Partilhar via


Classe CPageSetupDialog

Encapsula os serviços fornecidos pela caixa de diálogo Configuração de Página OLE comum do Windows com suporte adicional para definir e modificar margens de impressão.

Sintaxe

class CPageSetupDialog : public CCommonDialog

Membros

Construtores públicos

Nome Descrição
CPageSetupDialog::CPageSetupDialog Constrói um objeto CPageSetupDialog.

Métodos públicos

Nome Descrição
CPageSetupDialog::CreatePrinterDC Cria um contexto de dispositivo para impressão.
CPageSetupDialog::DoModal Exibe a caixa de diálogo e permite que o usuário faça uma seleção.
CPageSetupDialog::GetDeviceName Retorna o nome do dispositivo da impressora.
CPageSetupDialog::GetDevMode Retorna o DEVMODE atual da impressora.
CPageSetupDialog::GetDriverName Retorna o driver usado pela impressora.
CPageSetupDialog::GetMargins Retorna as configurações de margem atuais da impressora.
CPageSetupDialog::GetPaperSize Retorna o tamanho do papel da impressora.
CPageSetupDialog::GetPortName Retorna o nome da porta de saída.
CPageSetupDialog::OnDrawPage Chamado pela estrutura para renderizar uma imagem de tela de uma página impressa.
CPageSetupDialog::PreDrawPage Chamado pela estrutura antes de renderizar uma imagem de tela de uma página impressa.

Membros de Dados Públicos

Nome Descrição
CPageSetupDialog::m_psd Uma estrutura usada para personalizar um objeto CPageSetupDialog.

Comentários

Essa classe foi projetada para ocupar o lugar da caixa de diálogo Configuração de Impressão.

Para usar um objeto CPageSetupDialog, primeiro crie o objeto usando o construtor CPageSetupDialog. Depois que a caixa de diálogo for construída, você poderá definir ou modificar valores no membro de dados m_psd para inicializar os valores dos controles da caixa de diálogo. A estrutura m_psd é do tipo PAGESETUPDLG.

Depois de inicializar os controles da caixa de diálogo, chame a função de membro DoModal para exibir a caixa de diálogo e permitir que o usuário selecione opções de impressão. DoModal retorna se o usuário selecionou o botão OK (IDOK) ou Cancelar (IDCANCEL).

Se DoModal retornar IDOK, você poderá usar várias das funções de membro CPageSetupDialog ou acessar o membro de dados m_psd para recuperar a entrada de informações pelo usuário.

Observação

Depois que a caixa de diálogo comum de Configuração de Página OLE for descartada, nenhuma alteração feita pelo usuário será salva pela estrutura. Cabe ao próprio aplicativo salvar todos os valores dessa caixa de diálogo em um local permanente, como membro da classe de aplicativo ou documento do aplicativo.

Hierarquia de herança

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

CPageSetupDialog

Requisitos

Cabeçalho: afxdlgs.h

CPageSetupDialog::CPageSetupDialog

Chame essa função para construir um objeto CPageSetupDialog.

CPageSetupDialog(
    DWORD dwFlags = PSD_MARGINS | PSD_INWININIINTLMEASURE,
    CWnd* pParentWnd = NULL);

Parâmetros

dwFlags
Um ou mais sinalizadores que você pode usar para personalizar as configurações da caixa de diálogo. Os valores podem ser combinados usando o operador OR bit a bit. Esses valores têm estes significados:

  • PSD_DEFAULTMINMARGINS Define as larguras mínimas permitidas para que as margens de página sejam iguais aos mínimos da impressora. Esse sinalizador será ignorado se os sinalizadores PSD_MARGINS e PSD_MINMARGINS também forem especificados.

  • PSD_INWININIINTLMEASURE Não implementado.

  • PSD_MINMARGINS Faz com que o sistema use os valores especificados no membro rtMinMargin como as larguras mínimas permitidas para as margens esquerda, superior, direita e inferior. O sistema impede que o usuário insira uma largura menor que o mínimo especificado. Se PSD_MINMARGINS não for especificado, o sistema definirá as larguras mínimas permitidas para as permitidas pela impressora.

  • PSD_MARGINS Ativa a área de controle de margem.

  • PSD_INTHOUSANDTHSOFINCHES Faz com que as unidades da caixa de diálogo sejam medidas em 1/1000 de polegada.

  • PSD_INHUNDREDTHSOFMILLIMETERS Faz com que as unidades da caixa de diálogo sejam medidas em 1/100 de um milímetro.

  • PSD_DISABLEMARGINS Desabilita os controles da caixa de diálogo de margem.

  • PSD_DISABLEPRINTER Desabilita o botão Impressora.

  • PSD_NOWARNING Impede que a mensagem de aviso seja exibida quando não há impressora padrão.

  • PSD_DISABLEORIENTATION Desabilita o controle de diálogo de orientação da página.

  • PSD_RETURNDEFAULT Faz CPageSetupDialog retornar as estruturas DEVMODE e DEVNAMES que são inicializadas para a impressora padrão do sistema sem exibir uma caixa de diálogo. Supõe-se que hDevNames e hDevMode sejam ambos NULL; caso contrário, a função retornará um erro. Se a impressora padrão do sistema tiver suporte em um driver de impressora antigo (anterior ao Windows versão 3.0), só hDevNames será retornado; hDevMode será NULL.

  • PSD_DISABLEPAPER Desabilita o controle de seleção de papel.

  • PSD_SHOWHELP Faz com que a caixa de diálogo mostre o botão Ajuda. O membro hwndOwner não deverá ser NULL se esse sinalizador for especificado.

  • PSD_ENABLEPAGESETUPHOOK Habilita a função de gancho especificada em lpfnSetupHook.

  • PSD_ENABLEPAGESETUPTEMPLATE Faz com que o sistema operacional crie a caixa de diálogo usando a caixa de diálogo de modelo identificada por hInstance e lpSetupTemplateName.

  • PSD_ENABLEPAGESETUPTEMPLATEHANDLE Indica que hInstance identifica um bloco de dados que contém um modelo de caixa de diálogo pré-carregado. O sistema ignorará lpSetupTemplateName se esse sinalizador for especificado.

  • PSD_ENABLEPAGEPAINTHOOK Habilita a função de gancho especificada em lpfnPagePaintHook.

  • PSD_DISABLEPAGEPAINTING Desabilita a área de desenho da caixa de diálogo.

pParentWnd
Ponteiro para o pai ou proprietário da caixa de diálogo.

Comentários

Use a função DoModal para exibir a caixa de diálogo.

Exemplo

void CMyRichEditView::OnPageSetupDlg()
{
   CPageSetupDialog psd(PSD_INTHOUSANDTHSOFINCHES | PSD_MARGINS |
      PSD_ENABLEPAGEPAINTHOOK, this);

   // Initialize margins
   psd.m_psd.rtMargin.top = 1000;
   psd.m_psd.rtMargin.left = 1250;
   psd.m_psd.rtMargin.right = 1250;
   psd.m_psd.rtMargin.bottom = 1000;
   psd.m_psd.lpfnPagePaintHook = (LPPAGEPAINTHOOK)PaintHook;

   if (IDOK == psd.DoModal())
   {
      // Propagate changes to the app
      AfxGetApp()->SelectPrinter(psd.m_psd.hDevNames, psd.m_psd.hDevMode);
   }
   else
   {
      TRACE(_T("CommDlgExtendedError returned error %d from ")
         _T("CPageSetupDialog::DoModal().\n"),
         (int)CommDlgExtendedError());
   }
}

CPageSetupDialog::CreatePrinterDC

Cria um contexto de dispositivo de impressora das estruturas DEVMODE e DEVNAMES.

HDC CreatePrinterDC();

Valor de Devolução

Manipule para o DC (contexto de dispositivo de impressora) recém-criado.

CPageSetupDialog::DoModal

Chame essa função para exibir a caixa de diálogo configuração de página OLE comum do Windows e permitir que o usuário selecione várias opções de instalação de impressão, como margens de impressão, tamanho e orientação do papel e impressora de destino.

virtual INT_PTR DoModal();

Valor de Devolução

IDOK ou IDCANCEL. Se IDCANCEL for retornado, chame a função CommDlgExtendedError do Windows para determinar se ocorreu um erro.

IDOK e IDCANCEL são constantes que indicam se o usuário selecionou o botão OK ou Cancelar.

Comentários

Além disso, o usuário pode acessar as opções de instalação da impressora, como local de rede e propriedades específicas da impressora selecionada.

Se você quiser inicializar as várias opções de diálogo configuração de página definindo membros da estrutura m_psd, faça isso antes de chamar DoModal e depois que o objeto de caixa de diálogo for construído. Depois de chamar DoModal, chame outras funções de membro para recuperar as configurações ou a entrada de informações do usuário na caixa de diálogo.

Se você quiser propagar as configurações atuais inseridas pelo usuário, faça uma chamada para CWinApp::SelectPrinter. Essa função obtém as informações do objeto CPageSetupDialog e inicializa e seleciona um novo DC de impressora com os atributos apropriados.

AfxGetApp()->SelectPrinter(psd.m_psd.hDevNames, psd.m_psd.hDevMode);

Exemplo

Confira o exemplo de CPageSetupDialog::CPageSetupDialog.

CPageSetupDialog::GetDeviceName

Chame essa função depois de DoModal para recuperar o nome da impressora selecionada no momento.

CString GetDeviceName() const;

Valor de Devolução

O nome do dispositivo usado pelo objeto CPageSetupDialog.

CPageSetupDialog::GetDevMode

Chame essa função depois de chamar DoModal para recuperar informações sobre o contexto do dispositivo da impressora do objeto CPageSetupDialog.

LPDEVMODE GetDevMode() const;

Valor de Devolução

A estrutura de dados DEVMODE, que contém informações sobre a inicialização do dispositivo e o ambiente de um driver de impressão. Você deve desbloquear a memória obtida por essa estrutura com a função GlobalUnlock do Windows, que é descrita no SDK do Windows.

CPageSetupDialog::GetDriverName

Chame essa função depois de chamar DoModal para recuperar o nome do driver de dispositivo de impressora definido pelo sistema.

CString GetDriverName() const;

Valor de Devolução

Um CString especificando o nome do driver definido pelo sistema.

Comentários

Use um ponteiro para o objeto CString retornado por GetDriverName como o valor de lpszDriverName em uma chamada para CDC::CreateDC.

CPageSetupDialog::GetMargins

Chame essa função após uma chamada para DoModal para recuperar as margens do driver de dispositivo da impressora.

void GetMargins(
    LPRECT lpRectMargins,
    LPRECT lpRectMinMargins) const;

Parâmetros

lpRectMargins
Ponteiro para uma estrutura RECT ou objeto CRect que descreve (em 1/1000 polegadas ou 1/100 mm) as margens de impressão da impressora selecionada no momento. Passe NULL para esse parâmetro se você não estiver interessado neste retângulo.

lpRectMinMargins
Ponteiro para uma estrutura RECT ou um objeto CRect que descreve (em 1/1000 polegadas ou 1/100 mm) as margens mínimas de impressão para a impressora selecionada no momento. Passe NULL para esse parâmetro se você não estiver interessado neste retângulo.

CPageSetupDialog::GetPaperSize

Chame essa função para recuperar o tamanho do papel selecionado para impressão.

CSize GetPaperSize() const;

Valor de Devolução

Um objeto CSize que contém o tamanho do papel (em 1/1000 polegadas ou 1/100 mm) selecionado para impressão.

CPageSetupDialog::GetPortName

Chame essa função depois de chamar DoModal para recuperar o nome da porta da impressora selecionada no momento.

CString GetPortName() const;

Valor de Devolução

O nome da porta da impressora selecionada no momento.

CPageSetupDialog::m_psd

Uma estrutura do tipo PAGESETUPDLG, cujos membros armazenam as características do objeto de caixa de diálogo.

PAGESETUPDLG m_psd;

Comentários

Depois de construir um objeto CPageSetupDialog, você pode usar m_psd para definir vários aspectos da caixa de diálogo antes de chamar a função de membro DoModal.

Se você modificar o membro de dados m_psd diretamente, substituirá qualquer comportamento padrão.

Para mais informações sobre a estrutura PAGESETUPDLG, confira o SDK do Windows.

Confira o exemplo de CPageSetupDialog::CPageSetupDialog.

CPageSetupDialog::OnDrawPage

Chamado pela estrutura para desenhar uma imagem de tela de uma página impressa.

virtual UINT OnDrawPage(
    CDC* pDC,
    UINT nMessage,
    LPRECT lpRect);

Parâmetros

pDC
Ponteiro para o contexto do dispositivo da impressora.

nMessage
Especifica uma mensagem, indicando a área da página que está sendo desenhada no momento. Um dos seguintes pode ser feito:

  • WM_PSD_FULLPAGERECT toda a área da página.

  • WM_PSD_MINMARGINRECT Margens mínimas atuais.

  • WM_PSD_MARGINRECT Margens atuais.

  • WM_PSD_GREEKTEXTRECT Conteúdo da página.

  • WM_PSD_ENVSTAMPRECT Área reservada para uma representação de selo de postagem.

  • WM_PSD_YAFULLPAGERECT Área para uma representação de endereço retornado. Essa área se estende até as bordas da área da página de exemplo.

lpRect
Ponteiro para um objeto CRect ou RECT que contém as coordenadas da área de desenho.

Valor de Devolução

Valor não zero se tratado; caso contrário, 0.

Comentários

Essa imagem é exibida como parte da caixa de diálogo comum configuração de página OLE. A implementação padrão desenha uma imagem de uma página de texto.

Substitua essa função para personalizar o desenho de uma área específica da imagem ou de toda a imagem. Você pode fazer isso usando uma instrução switch com instruções case que verificam o valor de nMessage. Por exemplo, para personalizar a renderização do conteúdo da imagem da página, você pode usar o seguinte código de exemplo:

switch (nMessage)
{
case WM_PSD_GREEKTEXTRECT:
   DrawMyImage(pDC, lpRect);    //draws my special graphic
   return 1;
default:
   return CPageSetupDialog::OnDrawPage(pDC, nMessage, lpRect);
}

Observe que você não precisa lidar com todos os casos de nMessage. Você pode optar por manipular um componente da imagem, vários componentes da imagem ou toda a área.

CPageSetupDialog::PreDrawPage

Chamado pela estrutura antes de desenhar a imagem de tela de uma página impressa.

virtual UINT PreDrawPage(
    WORD wPaper,
    WORD wFlags,
    LPPAGESETUPDLG pPSD);

Parâmetros

wPaper
Especifica um valor que indica o tamanho do papel. Esse valor pode ser um dos valores DMPAPER_ listados na descrição da estrutura DEVMODE.

wFlags
Indica a orientação do papel ou envelope e se a impressora é um dispositivo de matriz de pontos ou HPPCL (Linguagem de Controle de Impressora Hewlett Packard). Esse parâmetro pode ter um dos seguintes valores:

  • 0x001 Papel no modo paisagem (matriz de pontos)

  • 0x003 Papel no modo paisagem (HPPCL)

  • 0x005 Papel no modo retrato (matriz de pontos)

  • 0x007 Paper no modo retrato (HPPCL)

  • 0x00b Envelope no modo paisagem (HPPCL)

  • 0x00d Envelope no modo retrato (matriz de pontos)

  • 0x019 Envelope no modo paisagem (matriz de pontos)

  • 0x01f Envelope no modo retrato (matriz de pontos)

pPSD
Ponteiro para uma estrutura PAGESETUPDLG. Para mais informações sobre PAGESETUPDLG, confira o SDK do Windows.

Valor de Devolução

Valor não zero se tratado; caso contrário, 0.

Comentários

Substitua essa função para personalizar o desenho da imagem. Se você substituir essa função e retornar TRUE, deverá desenhar toda a imagem. Se você substituir essa função e retornar FALSE, toda a imagem padrão será desenhada pela estrutura.

Confira também

WORDPAD de exemplo do MFC
Classe CCommonDialog
Gráfico da hierarquia