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
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 quehDevNames
ehDevMode
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
elpSetupTemplateName
.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 retorno
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 retorno
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 retorno
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 retorno
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 retorno
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 retorno
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 retorno
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 retorno
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 retorno
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