Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.
Representa folhas de propriedades, também conhecidas como caixas de diálogo de tabulação.
Sintaxe
class CPropertySheet : public CWnd
Membros
Construtores Públicos
| Nome | Description |
|---|---|
CPropertySheet::CPropertySheet |
Constrói um CPropertySheet objeto. |
Métodos Públicos
| Nome | Description |
|---|---|
CPropertySheet::AddPage |
Adiciona uma página à folha de propriedades. |
CPropertySheet::Construct |
Constrói um CPropertySheet objeto. |
CPropertySheet::Create |
Apresenta uma folha de propriedades sem modos. |
CPropertySheet::DoModal |
Apresenta uma folha de propriedades modais. |
CPropertySheet::EnableStackedTabs |
Indica se a folha de propriedades utiliza separadores empilhados ou deslizantes. |
CPropertySheet::EndDialog |
Termina a ficha de propriedades. |
CPropertySheet::GetActiveIndex |
Recupera o índice da página ativa da folha de propriedades. |
CPropertySheet::GetActivePage |
Devolve o objeto de página ativa. |
CPropertySheet::GetPage |
Recupera um ponteiro para a página especificada. |
CPropertySheet::GetPageCount |
Recupera o número de páginas na folha de propriedades. |
CPropertySheet::GetPageIndex |
Recupera o índice da página especificada da folha de propriedades. |
CPropertySheet::GetTabControl |
Recupera um ponteiro para um controlo de tabulação. |
CPropertySheet::MapDialogRect |
Converte as unidades de caixa de diálogo de um retângulo em unidades de ecrã. |
CPropertySheet::OnInitDialog |
Override para aumentar a inicialização da folha de propriedades. |
CPropertySheet::PressButton |
Simula a escolha do botão especificado numa folha de propriedades. |
CPropertySheet::RemovePage |
Remove uma página da folha de propriedades. |
CPropertySheet::SetActivePage |
Define programaticamente o objeto de página ativa. |
CPropertySheet::SetFinishText |
Define o texto para o botão Terminar. |
CPropertySheet::SetTitle |
Define a legenda da folha de propriedades. |
CPropertySheet::SetWizardButtons |
Ativa os botões do assistente. |
CPropertySheet::SetWizardMode |
Ativa o modo de mago. |
Membros de Dados Públicos
| Nome | Description |
|---|---|
CPropertySheet::m_psh |
A estrutura Windows PROPSHEETHEADER . Fornece acesso a parâmetros básicos da folha de propriedades. |
Observações
Uma folha de propriedades consiste num CPropertySheet objeto e em um ou mais CPropertyPage objetos. A estrutura apresenta uma folha de propriedades como uma janela com um conjunto de índices de tabulação e uma área que contém a página atualmente selecionada. O utilizador navega até uma página específica usando o separador apropriado.
CPropertySheet fornece suporte para a estrutura expandida PROPSHEETHEADER introduzida no Windows 98 e Windows NT 2000. A estrutura contém flags e membros adicionais que suportam a utilização de um bitmap de fundo "marca de água".
Para exibir automaticamente estas novas imagens no seu objeto da folha de propriedades, passe valores válidos para as imagens bitmap e da paleta na chamada para CPropertySheet::Construct ou CPropertySheet::CPropertySheet.
Embora CPropertySheet não derive de CDialog, gerir um CPropertySheet objeto é como gerir um CDialog objeto. Por exemplo, a criação de uma folha de propriedades requer a construção em duas partes: chamar o construtor, e depois pedir DoModal uma folha de propriedades modal ou Create uma folha de propriedades sem modos.
CPropertySheet tem dois tipos de construtores: CPropertySheet::Construct e CPropertySheet::CPropertySheet.
Quando constrói um CPropertySheet objeto, alguns Estilos de Janela podem causar uma exceção de primeira oportunidade. Isto resulta do sistema tentar alterar o estilo da folha de propriedades antes de a folha ser criada. Para evitar esta exceção, certifique-se de definir os seguintes estilos ao criar o seu CPropertySheet:
DS_3DLOOKDS_CONTROLWS_CHILDWS_TABSTOP
Os seguintes estilos são opcionais e não causam a exceção de primeira oportunidade:
DS_SHELLFONTDS_LOCALEDITWS_CLIPCHILDREN
Quaisquer outros Window Styles são proibidos e não deve permiti-los.
A troca de dados entre um CPropertySheet objeto e um objeto externo é semelhante à troca de dados com um CDialog objeto. A diferença importante é que as definições de uma folha de propriedades são tipicamente variáveis membros dos CPropertyPage objetos e não do CPropertySheet próprio objeto.
Pode criar um tipo de caixa de diálogo de separação chamada assistente, que consiste numa folha de propriedades com uma sequência de páginas de propriedades que orientam o utilizador nos passos de uma operação, como configurar um dispositivo ou criar uma newsletter. Numa caixa de diálogo do tipo de aviso tipo assistente, as páginas de propriedades não têm separadores, e apenas uma página de propriedade é visível de cada vez. Além disso, em vez de ter os botões OK e Aplicar Agora, uma caixa de diálogo tipo feiticeiro tem um botão Voltar atrás, um botão Próximo ou Terminar, um botão Cancelar e um botão Ajuda.
Para criar uma caixa de diálogo do tipo assistente, siga os mesmos passos que seguiria para criar uma folha de propriedades padrão, mas chame SetWizardMode antes de chamar DoModal. Para ativar os botões do assistente, chame SetWizardButtons, usando flags para personalizar a sua função e aparência. Para ativar o botão Terminar , ligue SetFinishText depois de o utilizador ter tomado uma ação na última página do assistente.
Para mais informações sobre como usar CPropertySheet objetos, consulte o artigo Folhas de Propriedades e Páginas de Propriedades.
Hierarquia de herança
CPropertySheet
Requerimentos
Cabeçalho:afxdlgs.h
CPropertySheet::AddPage
Adiciona a página fornecida com o separador mais à direita na folha de propriedades.
void AddPage(CPropertyPage* pPage);
Parâmetros
pPage
Aponta para a página a ser adicionada à folha de propriedades. Não pode ser NULL.
Observações
Adicione páginas à folha de propriedades na ordem da esquerda para a direita que quer que apareçam.
AddPage adiciona o CPropertyPage objeto à CPropertySheet lista de páginas do objeto, mas não cria efetivamente a janela para a página. O framework adia a criação da janela para a página até que o utilizador selecione essa página.
Quando adiciona uma página de propriedades usando AddPage, o CPropertySheet é o pai do CPropertyPage. Para aceder à folha de propriedade a partir da página da propriedade, ligue CWnd::GetParentpara .
Não é necessário esperar até à criação da janela da folha de propriedade para chamar AddPage. Normalmente, vai ligar AddPage antes de ligar DoModal ou Create.
Se ligar AddPage após mostrar a página de propriedades, a linha de separação irá refletir a página recém-adicionada.
Example
// Add three pages to a CPropertySheet object, then show the
// CPropertySheet object as a modal dialog. CStylePage, CShapePage,
// and CColorPage are CPropertyPage-derived classes created
// by the Add Class wizard.
CPropertySheet dlgPropertySheet(_T("Simple PropertySheet"));
CStylePage stylePage;
CColorPage colorPage;
CShapePage shapePage;
dlgPropertySheet.AddPage(&stylePage);
dlgPropertySheet.AddPage(&colorPage);
dlgPropertySheet.AddPage(&shapePage);
dlgPropertySheet.DoModal();
CPropertySheet::Construct
Constrói um CPropertySheet objeto.
void Construct(
UINT nIDCaption,
CWnd* pParentWnd = NULL,
UINT iSelectPage = 0);
void Construct(
LPCTSTR pszCaption,
CWnd* pParentWnd = NULL,
UINT iSelectPage = 0);
void Construct(
UINT nIDCaption,
CWnd* pParentWnd,
UINT iSelectPage,
HBITMAP hbmWatermark,
HPALETTE hpalWatermark = NULL,
HBITMAP hbmHeader = NULL);
void Construct(
LPCTSTR pszCaption,
CWnd* pParentWnd,
UINT iSelectPage,
HBITMAP hbmWatermark,
HPALETTE hpalWatermark = NULL,
HBITMAP hbmHeader = NULL);
Parâmetros
nIDCaption
Identificação da legenda a ser usada na folha de propriedades.
pParentWnd
Aponta para a janela principal da folha de propriedades. Se NULL, a janela pai será a janela principal da aplicação.
iSelectPage
O índice da página que inicialmente estará no topo. O padrão é a primeira página adicionada à folha.
pszCaption
Apontador para uma string contendo a legenda a ser usada para a folha de propriedades. Não pode ser NULL.
hbmWatermark
Handle para o bitmap da marca de água da página de propriedades.
hpalWatermark
Handle para a paleta do bitmap de marca de água e/ou do bitmap do cabeçalho.
hbmHeader
Handle para o bitmap do cabeçalho da página de propriedades.
Observações
Chame esta função membro se um dos construtores de classe ainda não tiver sido chamado. Por exemplo, chama Construct quando declaras ou alocas arrays de CPropertySheet objetos. No caso dos arrays, deve chamar Construct cada membro do array.
Para mostrar a folha de propriedades, ligue DoModal ou Create. A cadeia contida no primeiro parâmetro será colocada na barra de legendas da folha de propriedades.
Pode mostrar automaticamente imagens de marca de água e/ou cabeçalhos se usar o terceiro ou quarto protótipos de Construct, listados acima, e passar valores válidos para os hbmWatermark, hpalWatermark, e/ou hbmHeader parâmetros.
Example
O exemplo seguinte demonstra em que circunstâncias se chamaria Construct.
const int c_cSheets = 3;
CPropertySheet grpropsheet[c_cSheets];
// no need to call Construct for this next one
CPropertySheet someSheet(_T("Some sheet"));
LPTSTR rgszSheets[c_cSheets] = {
_T("Sheet 1"),
_T("Sheet 2"),
_T("Sheet 3")
};
for (int i = 0; i < c_cSheets; i++)
grpropsheet[i].Construct(rgszSheets[i]);
CPropertySheet::CPropertySheet
Constrói um CPropertySheet objeto.
CPropertySheet();
explicit CPropertySheet(
UINT nIDCaption,
CWnd* pParentWnd = NULL,
UINT iSelectPage = 0);
explicit CPropertySheet(
LPCTSTR pszCaption,
CWnd* pParentWnd = NULL,
UINT iSelectPage = 0);
CPropertySheet(
UINT nIDCaption,
CWnd* pParentWnd,
UINT iSelectPage,
HBITMAP hbmWatermark,
HPALETTE hpalWatermark = NULL,
HBITMAP hbmHeader = NULL);
CPropertySheet(
LPCTSTR pszCaption,
CWnd* pParentWnd,
UINT iSelectPage,
HBITMAP hbmWatermark,
HPALETTE hpalWatermark = NULL,
HBITMAP hbmHeader = NULL);
Parâmetros
nIDCaption
Identificação da legenda a ser usada na folha de propriedades.
pParentWnd
Aponta para a janela principal da folha de propriedades. Se NULL, a janela pai será a janela principal da aplicação.
iSelectPage
O índice da página que inicialmente estará no topo. O padrão é a primeira página adicionada à folha.
pszCaption
Aponta para uma cadeia contendo a legenda a ser usada para a folha de propriedades. Não pode ser NULL.
hbmWatermark
Um handler para o bitmap de fundo da folha de propriedades.
hpalWatermark
Um handle para a paleta do bitmap de marca de água e/ou do bitmap do cabeçalho.
hbmHeader
Um handler para o bitmap do cabeçalho da página de propriedades.
Observações
Para mostrar a folha de propriedades, ligue DoModal ou Create. A cadeia contida no primeiro parâmetro será colocada na barra de legendas da folha de propriedades.
Se tiver múltiplos parâmetros (por exemplo, se estiver a usar um array), use Construct em vez de CPropertySheet.
Pode mostrar automaticamente imagens de marca de água e/ou cabeçalhos se usar o terceiro ou quarto protótipos de CPropertySheet, acima, e passar valores válidos para os hbmWatermark, hpalWatermark, e/ou hbmHeader parâmetros.
Example
// Declare a CPropertySheet object titled "Simple PropertySheet".
CPropertySheet dlgPropertySheet1(_T("Simple PropertySheet"));
// Declare a CPropertySheet object whose title is specified in the
// IDS_PROPERTYSHEET_TITLE string resource, and the second page is
// initially on top.
CPropertySheet dlgPropertySheet2(IDS_PROPERTYSHEET_TITLE, this, 1);
CPropertySheet::Create
Apresenta uma folha de propriedades sem modos.
virtual BOOL Create(CWnd* pParentWnd = NULL,
DWORD dwStyle = (DWORD)-1,
DWORD dwExStyle = 0);
Parâmetros
pParentWnd
Aponta para a janela dos pais. Se NULL, o pai for o ambiente de trabalho.
dwStyle
Estilos de janelas para a folha de propriedade. Para uma lista completa dos estilos disponíveis, consulte Estilos de Janela.
dwExStyle
Estilos de janelas estendidas para folha de propriedade. Para uma lista completa dos estilos disponíveis, consulte Estilos de Janelas Estendidas
Valor de retorno
Diferente de zero se a folha de propriedades for criada com sucesso; caso contrário, 0.
Observações
A chamada para Create pode estar dentro do construtor, ou pode chamá-la depois de o construtor ser invocado.
O estilo padrão, expresso passando -1 como dwStyle, é na verdade WS_SYSMENU|WS_POPUP|WS_CAPTION|DS_MODALFRAME|DS_CONTEXTHELP|WS_VISIBLE. O estilo padrão de janela estendida, expresso passando 0 como dwExStyle, é na verdade WS_EX_DLGMODALFRAME.
A Create função membro regressa imediatamente após criar a folha de propriedades. Para destruir a folha de propriedades, ligue CWnd::DestroyWindowpara .
Folhas de propriedades sem modo exibidas com uma chamada para Create não têm os botões OK, Cancelar, Aplicar Agora e Ajuda, como as folhas de propriedades modais. Os botões desejados devem ser criados pelo utilizador.
Para mostrar uma folha de propriedades modal, ligue DoModal em vez disso.
Example
// This code fragment shows how to create a modeless property sheet
// dialog in a command message handler (OnModelessPropertySheet())
// of a CView-derived class.
void CPSheetView::OnModelessPropertySheet()
{
// Declare a CPropertySheet object. m_pdlgPropertySheet is a data
// member of type CPropertySheet in CView-derived class.
m_pdlgPropertySheet = new CPropertySheet(_T("Simple PropertySheet"));
ASSERT(m_pdlgPropertySheet);
// Add three pages to the CPropertySheet object. Both m_pstylePage,
// m_pcolorPage, and m_pshapePage are data members of type
// CPropertyPage-derived classes in CView-derived class.
m_pstylePage = new CStylePage;
m_pcolorPage = new CColorPage;
m_pshapePage = new CShapePage;
m_pdlgPropertySheet->AddPage(m_pstylePage);
m_pdlgPropertySheet->AddPage(m_pcolorPage);
m_pdlgPropertySheet->AddPage(m_pshapePage);
// Create a modeless CPropertySheet dialog.
m_pdlgPropertySheet->Create();
}
// The code fragment below shows how to destroy the C++ objects for
// propertysheet and propertypage in the destructor of CView-derived
// class.
// NOTE: DestroyWindow() is called in CPropertySheet::OnClose() so
// you do not need to call it here. Property pages are children
// of the CPropertySheet, they will be destroyed by their parents.
CPSheetView::~CPSheetView()
{
delete m_pshapePage;
delete m_pstylePage;
delete m_pcolorPage;
delete m_pdlgPropertySheet;
}
CPropertySheet::DoModal
Apresenta uma folha de propriedades modais.
virtual INT_PTR DoModal();
Valor de retorno
IDOK ou IDCANCEL se a função fosse bem-sucedida; caso contrário, 0 ou -1. Se a folha de propriedades foi estabelecida como um assistente (ver SetWizardMode), DoModal devolve ou ID_WIZFINISH ou IDCANCEL.
Observações
O valor de retorno corresponde ao ID do controlo que fechou a folha de propriedades. Depois de esta função regressar, as janelas correspondentes à folha de propriedades e todas as páginas terão sido destruídas. Os próprios objetos continuarão a existir. Normalmente, vais recuperar dados dos CPropertyPage objetos depois de DoModal devolveres o IDOK.
Para mostrar uma folha de propriedades sem modos, chame Create em vez disso.
Quando uma página de propriedades é criada a partir do seu recurso de diálogo correspondente, pode causar uma exceção de primeira oportunidade. Isto resulta da página de propriedades alterar o estilo do recurso de diálogo para o estilo exigido antes da criação da página. Como os recursos são geralmente apenas de leitura, isto cria uma exceção. O sistema trata da exceção e faz uma cópia do recurso modificado. A exceção de primeira oportunidade pode, portanto, ser ignorada.
Observação
Esta exceção deve ser tratada pelo sistema operativo se estiver a compilar com o modelo assíncrono de tratamento de exceções. Para mais informações sobre modelos de gestão de exceções, consulte /EH (Modelo de Gestão de Exceções). Neste caso, não envolva chamadas a CPropertySheet::DoModal com um bloco try-catch em C++ em que a captura gere todas as exceções, por exemplo, catch (...). Este bloco trataria da exceção destinada ao sistema operativo e causaria comportamentos imprevisíveis. No entanto, pode usar em segurança o tratamento de exceções em C++ com tipos específicos de exceção ou o tratamento estruturado de exceções, onde a exceção de Violação de Acesso é passada para o sistema operativo.
Para evitar gerar esta exceção de primeira oportunidade, pode garantir manualmente que a ficha de propriedades tem os Estilos de Janelas corretos. Deve definir os seguintes estilos para uma folha de propriedades:
DS_3DLOOKDS_CONTROLWS_CHILDWS_TABSTOP
Pode usar os seguintes estilos opcionais sem causar uma exceção de primeira oportunidade:
DS_SHELLFONTDS_LOCALEDITWS_CLIPCHILDREN
Desative todos os outros estilos do Windows porque não são compatíveis com folhas de propriedades. Este conselho não se aplica a estilos estendidos. Definir corretamente estes padrões garantirá que a folha de propriedade não precise de ser modificada e evitará a exceção de primeira oportunidade.
Example
Veja o exemplo para CPropertySheet::AddPage.
CPropertySheet::EnableStackedTabs
Indica se deve empilhar linhas de separadores numa folha de propriedades.
void EnableStackedTabs(BOOL bStacked);
Parâmetros
bStacked
Indica se os separadores empilhados estão ativados na folha de propriedades. Desative as linhas empilhadas de etiquetas definindo bStacked para FALSE.
Observações
Por defeito, se uma folha de propriedades tiver mais separadores do que cabem numa única linha na largura da folha de propriedades, os separadores vão empilhar-se em várias linhas. Para usar separadores de rolagem em vez de empilhados, chame EnableStackedTabs com set para FALSE antes de chamar DoModal ou CreatebStacked .
Deve ligar EnableStackedTabs quando cria uma folha de propriedades modal ou sem modos. Para incorporar este estilo numa CPropertySheetclasse derivada em , escreva um manipulador de mensagens para WM_CREATE. Na versão sobreposta de CWnd::OnCreate, chama EnableStackedTabs( FALSE ) antes de chamar a implementação da classe base.
Example
int CMyPropertySheet::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
// Set for Scrolling Tabs style
EnableStackedTabs(FALSE);
// Call the base class
if (CPropertySheet::OnCreate(lpCreateStruct) == -1)
return -1;
return 0;
}
CPropertySheet::EndDialog
Termina a ficha de propriedades.
void EndDialog(int nEndID);
Parâmetros
nEndID
Identificador a ser usado como valor de retorno da folha de propriedades.
Observações
Esta função membro é chamada pelo framework quando é pressionado o botão OK, Cancelar ou Fechar. Chame esta função de membro se ocorrer um evento que deva encerrar a ficha de imóveis.
Esta função membro é usada apenas com uma caixa de diálogo modal.
Example
Veja o exemplo para CPropertySheet::PressButton.
CPropertySheet::GetActiveIndex
Obtém o número de índice da página ativa da janela da folha de propriedades e depois usa o número de índice devolvido como parâmetro para GetPage.
int GetActiveIndex() const;
Valor de retorno
O número de índice da página ativa.
Example
Veja o exemplo para CPropertySheet::GetActivePage.
CPropertySheet::GetActivePage
Recupera a página ativa da janela da folha de propriedades.
CPropertyPage* GetActivePage() const;
Valor de retorno
O ponteiro para a página ativa.
Observações
Use esta função membro para realizar alguma ação na página ativa.
Example
// The code fragment below sets the last active page (i.e. the
// active page when the propertysheet was closed) to be the first
// visible page when the propertysheet is shown. The last active
// page was saved in m_LastActivePage, (a member variable of
// CDocument-derived class) when OK was selected from the
// propertysheet. CMyPropertySheet is a CPropertySheet-derived class.
BOOL CMyPropertySheet::OnInitDialog()
{
BOOL bResult = CPropertySheet::OnInitDialog();
CMDIFrameWnd* pframe = (CMDIFrameWnd*)AfxGetMainWnd();
CMDIChildWnd* pchild = pframe->MDIGetActive();
CPSheetDoc* doc = (CPSheetDoc*)pchild->GetActiveDocument();
SetActivePage(doc->m_LastActivePage);
return bResult;
}
BOOL CMyPropertySheet::OnCommand(WPARAM wParam, LPARAM lParam)
{
if (LOWORD(wParam) == IDOK)
{
CMDIFrameWnd* pframe = (CMDIFrameWnd*)AfxGetMainWnd();
CMDIChildWnd* pchild = pframe->MDIGetActive();
CPSheetDoc* doc = (CPSheetDoc*)pchild->GetActiveDocument();
doc->m_LastActivePage = GetPageIndex(GetActivePage()); // or GetActiveIndex()
}
return CPropertySheet::OnCommand(wParam, lParam);
}
CPropertySheet::GetPage
Devolve um ponteiro para a página especificada nesta folha de propriedades.
CPropertyPage* GetPage(int nPage) const;
Parâmetros
nPage
Índice da página desejada, começando em 0. Deve ter entre 0 e uma a menos do que o número de páginas da folha de propriedades, inclusive.
Valor de retorno
O ponteiro para a página correspondente ao nPage parâmetro.
Example
Veja o exemplo para CPropertyPage::OnWizardFinish.
CPropertySheet::GetPageCount
Determina o número de páginas atualmente na folha de propriedades.
int GetPageCount() const;
Valor de retorno
O número de páginas na folha de propriedades.
Example
Veja o exemplo para CPropertyPage::OnWizardFinish.
CPropertySheet::GetPageIndex
Recupera o número de índice da página especificada na folha de propriedades.
int GetPageIndex(CPropertyPage* pPage);
Parâmetros
pPage
Aponta para a página com o índice a encontrar. Não pode ser NULL.
Valor de retorno
O número de índice de uma página.
Observações
Por exemplo, usaria GetPageIndex para obter o índice da página para usar SetActivePage ou GetPage.
Example
Veja o exemplo para CPropertySheet::GetActivePage.
CPropertySheet::GetTabControl
Recupera um ponteiro para um controlo de tabulação para fazer algo específico do controlo de tabulação (ou seja, para usar qualquer uma das APIs em CTabCtrl).
CTabCtrl* GetTabControl() const;
Valor de retorno
Um apontador para um controlo de tabulação.
Observações
Por exemplo, chame esta função membro se quiser adicionar bitmaps a cada um dos separadores durante a inicialização.
Example
// Create and associate a tooltip control to the tab control of
// CMyTTPropertySheet. CMyTTPropertySheet is a CPropertySheet-derived
// class.
BOOL CMyTTPropertySheet::OnInitDialog()
{
BOOL bResult = CPropertySheet::OnInitDialog();
// Create a tooltip control. m_pToolTipCtrl is a member variable
// of type CToolTipCtrl* in CMyTTPropertySheet class. It is
// initialized to NULL in the constructor, and destroyed in the
// destructor of CMyTTPropertySheet class.
m_pToolTipCtrl = new CToolTipCtrl;
if (!m_pToolTipCtrl->Create(this))
{
TRACE(_T("Unable To create ToolTip\n"));
return bResult;
}
// Associate the tooltip control to the tab control
// of CMyPropertySheet.
CTabCtrl* ptab = GetTabControl();
ptab->SetToolTips(m_pToolTipCtrl);
// Get the bounding rectangle of each tab in the tab control of the
// property sheet. Use this rectangle when registering a tool with
// the tool tip control. IDS_FIRST_TOOLTIP is the first ID string
// resource that contains the text for the tool.
int count = ptab->GetItemCount();
int id = IDS_FIRST_TOOLTIP;
for (int i = 0; i < count; i++)
{
CRect r;
ptab->GetItemRect(i, &r);
VERIFY(m_pToolTipCtrl->AddTool(ptab, id, &r, id));
id++;
}
// Activate the tooltip control.
m_pToolTipCtrl->Activate(TRUE);
return bResult;
}
// Override PreTranslateMessage() so RelayEvent() can be
// called to pass a mouse message to CMyTTPropertySheet's
// tooltip control for processing.
BOOL CMyTTPropertySheet::PreTranslateMessage(MSG* pMsg)
{
if (NULL != m_pToolTipCtrl)
m_pToolTipCtrl->RelayEvent(pMsg);
return CPropertySheet::PreTranslateMessage(pMsg);
}
CPropertySheet::m_psh
Uma estrutura cujos membros armazenam as características de PROPSHEETHEADER.
Observações
Use esta estrutura para inicializar a aparência da folha de propriedades após esta ser construída, mas antes de ser exibida com a DoModal função elemento. Por exemplo, defina o dwSize membro de m_psh para o tamanho que quer que a folha de propriedades tenha.
Para mais informações sobre esta estrutura, incluindo uma lista dos seus membros, consulte PROPSHEETHEADER o SDK do Windows.
Example
// This code fragment shows how to change CPropertySheet's settings
// before it is shown. After the changes, CPropertySheet has the
// caption "Simple Properties", no "Apply" button, and the
// second page (CColorPage) initially on top.
CPropertySheet dlgPropertySheet(_T("Simple PropertySheet"));
CStylePage stylePage;
CColorPage colorPage;
CShapePage shapePage;
dlgPropertySheet.AddPage(&stylePage);
dlgPropertySheet.AddPage(&colorPage);
dlgPropertySheet.AddPage(&shapePage);
dlgPropertySheet.m_psh.dwFlags |= PSH_NOAPPLYNOW | PSH_PROPTITLE;
dlgPropertySheet.m_psh.pszCaption = _T("Simple");
dlgPropertySheet.m_psh.nStartPage = 1;
dlgPropertySheet.DoModal();
CPropertySheet::MapDialogRect
Converte as unidades de caixa de diálogo de um retângulo em unidades de ecrã.
void MapDialogRect(LPRECT lpRect) const;
Parâmetros
lpRect
Aponta para uma RECT estrutura ou CRect objeto que contém as coordenadas da caixa de diálogo a converter.
Observações
As unidades de caixa de diálogo são expressas em termos da unidade base atual da caixa de diálogo derivada da largura e altura médias dos caracteres na fonte usada para o texto da caixa de diálogo. Uma unidade horizontal corresponde a um quarto da largura da base da caixa de diálogo, e uma unidade vertical é um oitavo da altura da base da caixa de diálogo.
A GetDialogBaseUnits função Windows devolve informação de tamanho para a fonte do sistema, mas pode especificar uma fonte diferente para cada folha de propriedades se usar o estilo DS_SETFONT no ficheiro de definição de recursos. A MapDialogRect função Windows, descrita no SDK do Windows, utiliza a fonte apropriada para esta caixa de diálogo.
A MapDialogRect função membro substitui as unidades de caixa de diálogo por lpRect unidades de ecrã (píxeis), para que o retângulo possa ser usado para criar uma caixa de diálogo ou posicionar um controlo dentro de uma caixa.
CPropertySheet::OnInitDialog
Sobrescreve para aumentar a inicialização da folha de propriedades.
virtual BOOL OnInitDialog();
Valor de retorno
Especifica se a aplicação definiu o foco de entrada para um dos controlos na folha de propriedades. Se OnInitDialog devolver não zero, o Windows define o foco de entrada para o primeiro controlo na folha de propriedades. A aplicação só pode devolver 0 se tiver definido explicitamente o foco de entrada para um dos controlos na folha de propriedades.
Observações
Esta função membro é chamada em resposta à WM_INITDIALOG mensagem. Esta mensagem é enviada para a folha de propriedades durante as Create chamadas de ourives DoModal , que ocorrem imediatamente antes da folha de propriedades ser apresentada.
Substitua esta função de membro se precisar de realizar um processamento especial quando a folha de propriedades for inicializada. Na versão sobreposta, primeiro chama a classe OnInitDialog base mas ignora o seu valor de retorno. Normalmente regressará TRUE da função de membro sobrescrito.
Não precisa de uma entrada de mapa de mensagens para esta função membro.
CPropertySheet::PressButton
Simula a escolha do botão especificado numa folha de propriedades.
void PressButton(int nButton);
Parâmetros
nButton
nButton : Identifica o botão a pressionar. Este parâmetro pode ser um dos seguintes valores:
PSBTN_BACKEscolhe o botão de Voltar.PSBTN_NEXTEscolhe o botão Seguinte.PSBTN_FINISHEscolhe o botão Terminar.PSBTN_OKEscolhe o botão OK.PSBTN_APPLYNOWEscolhe o botão Aplicar Agora.PSBTN_CANCELEscolhe o botão Cancelar.PSBTN_HELPEscolhe o botão de Ajuda.
Observações
Consulte PSM_PRESSBUTTON para mais informações sobre a mensagem Botão de Pressão do SDK do Windows.
Uma chamada para PressButton não enviará a PSN_APPLY notificação de uma página de propriedade para o sistema. Para enviar esta notificação, ligue CPropertyPage::OnOKpara .
Example
// Simulate the selection of OK and Cancel buttons when Alt+K and
// Alt+C are pressed. CMyPropertySheet is a CPropertySheet-derived
// class.
BOOL CMyPropertySheet::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message >= WM_KEYFIRST && pMsg->message <= WM_KEYLAST)
{
BOOL altkey = GetKeyState(VK_MENU) < 0;
if (altkey)
{
BOOL handled = TRUE;
switch (toupper((int)pMsg->wParam))
{
case 'C': // for Alt+C - Cancel button
PressButton(PSBTN_CANCEL); // or EndDialog(IDCANCEL);
break;
case 'K': // for Alt+K - OK button
PressButton(PSBTN_OK); // or EndDialog(IDOK);
break;
default:
handled = FALSE;
}
if (handled)
return TRUE;
}
}
return CPropertySheet::PreTranslateMessage(pMsg);
}
CPropertySheet::RemovePage
Remove uma página da folha de propriedades e destrói a janela associada.
void RemovePage(CPropertyPage* pPage);
void RemovePage(int nPage);
Parâmetros
pPage
Aponta para a página a ser removida da folha de propriedades. Não pode ser NULL.
nPage
Índice da página a ser removido. Deve ter entre 0 e uma a menos do que o número de páginas da folha de propriedades, inclusive.
Observações
O CPropertyPage objeto em si não é destruído até que o dono da CPropertySheet janela esteja fechado.
CPropertySheet::SetActivePage
Altera a página ativa.
BOOL SetActivePage(int nPage);
BOOL SetActivePage(CPropertyPage* pPage);
Parâmetros
nPage
Índice da página para o conjunto. Deve ser entre 0 e uma a menos do que o número de páginas da folha de propriedades, inclusive.
pPage
Aponta para a página a definir na folha de propriedades. Não pode ser NULL.
Valor de retorno
Diferente de zero se a folha de propriedades for ativada com sucesso; caso contrário, 0.
Observações
Por exemplo, use SetActivePage se a ação de um utilizador numa página fizer com que outra página se torne a página ativa.
Example
Veja o exemplo para CPropertySheet::GetActivePage.
CPropertySheet::SetFinishText
Define o texto no botão de comando Terminar.
void SetFinishText(LPCTSTR lpszText);
Parâmetros
lpszText
Aponta para o texto a ser exibido no botão de comando Terminar.
Observações
Chamar SetFinishText para mostrar o texto no botão de comando Terminar e ocultar os botões Next e Back depois de o utilizador completar a ação na última página do assistente.
Example
// CShapePage is the last wizard property page. Enable the Back
// button and change the Next button to Finish. The "Finish" button
// will have "Done" as its caption.
BOOL CShapePage::OnSetActive()
{
CPropertySheet* psheet = (CPropertySheet*)GetParent();
psheet->SetWizardButtons(PSWIZB_BACK | PSWIZB_FINISH);
psheet->SetFinishText(_T("Done"));
return CPropertyPage::OnSetActive();
}
CPropertySheet::SetTitle
Especifica a legenda da folha de propriedades (o texto mostrado na barra de título de uma janela de moldura).
void SetTitle(
LPCTSTR lpszText,
UINT nStyle = 0);
Parâmetros
nStyle
Especifica o estilo do título da folha de propriedade. O estilo deve ser especificado em 0 ou como PSH_PROPTITLE. Se o estilo estiver definido como PSH_PROPTITLE, a palavra "Properties" aparece após o texto especificado como legenda. Por exemplo, chamar SetTitle("Simple", PSH_PROPTITLE) resultará numa legenda de folha de propriedades com "Propriedades Simples."
lpszText
Aponta para o texto a ser usado como legenda na barra de título da folha de propriedades.
Observações
Por defeito, uma folha de propriedades usa o parâmetro de legenda no construtor da folha de propriedades.
Example
// Declare a CPropertySheet object with a caption "Simple PropertySheet".
CPropertySheet dlgPropertySheet(_T("Simple PropertySheet"));
// Add three pages to the CPropertySheet object. CStylePage, CColorPage,
// and CShapePage are CPropertyPage-derived classes created
// by the Add Class wizard.
CStylePage stylePage;
CColorPage colorPage;
CShapePage shapePage;
dlgPropertySheet.AddPage(&stylePage);
dlgPropertySheet.AddPage(&colorPage);
dlgPropertySheet.AddPage(&shapePage);
// Change the caption of the CPropertySheet object
// from "Simple PropertySheet" to "Simple Properties".
dlgPropertySheet.SetTitle(_T("Simple"), PSH_PROPTITLE);
// Show the CPropertySheet object as MODAL.
dlgPropertySheet.DoModal();
CPropertySheet::SetWizardButtons
Ativa ou desativa o botão Voltar atrás, Próximo ou Terminar numa folha de propriedades do assistente.
void SetWizardButtons(DWORD dwFlags);
Parâmetros
dwFlags
Um conjunto de flags que personalizam a função e a aparência dos botões do assistente. Este parâmetro pode ser uma combinação dos seguintes valores:
PSWIZB_BACKBotão de trásPSWIZB_NEXTBotão seguintePSWIZB_FINISHBotão de finalizaçãoPSWIZB_DISABLEDFINISHBotão de Acabamento Desativado
Observações
Ligue SetWizardButtons apenas depois de o diálogo estar aberto; não pode ligar SetWizardButtons antes de ligar DoModal. Normalmente, deve ligar SetWizardButtons de CPropertyPage::OnSetActive.
Se quiser alterar o texto no botão Terminar ou ocultar os botões Next e Back depois de o utilizador completar o assistente, chame SetFinishText. Note que o mesmo botão é partilhado para Terminar e Próximo. Podes mostrar um botão Terminar ou Seguinte ao mesmo tempo, mas não ambos.
Example
A CPropertySheet tem três páginas de propriedades de mago: CStylePage, CColorPage, e CShapePage. O fragmento de código abaixo mostra como ativar e desativar os botões Voltar e Seguir na página de propriedades do assistente.
// CStylePage is the first wizard property page. Disable the Back
// button but enable the Next button.
BOOL CStylePage::OnSetActive()
{
CPropertySheet* psheet = (CPropertySheet*) GetParent();
psheet->SetWizardButtons(PSWIZB_NEXT);
return CPropertyPage::OnSetActive();
}
// CColorPage is the second wizard property page. Enable both the
// Back button and the Next button.
BOOL CColorPage::OnSetActive()
{
CPropertySheet* psheet = (CPropertySheet*)GetParent();
psheet->SetWizardButtons(PSWIZB_BACK | PSWIZB_NEXT);
return CPropertyPage::OnSetActive();
}
// CShapePage is the last wizard property page. Enable the Back
// button and change the Next button to Finish. The "Finish" button
// will have "Done" as its caption.
BOOL CShapePage::OnSetActive()
{
CPropertySheet* psheet = (CPropertySheet*)GetParent();
psheet->SetWizardButtons(PSWIZB_BACK | PSWIZB_FINISH);
psheet->SetFinishText(_T("Done"));
return CPropertyPage::OnSetActive();
}
CPropertySheet::SetWizardMode
Estabelece uma página de propriedades como um feiticeiro.
void SetWizardMode();
Observações
Uma característica chave da página de propriedades de um assistente é que o utilizador navega usando os botões Próximo, Terminar, Voltar e Cancelar em vez de separadores.
Ligue SetWizardMode antes de ligar DoModalpara . Depois de chamar SetWizardMode, DoModal devolverá ou ID_WIZFINISH (se o utilizador fechar com o botão Terminar) ou IDCANCEL.
SetWizardMode Coloca a PSH_WIZARD bandeira.
Example
CPropertySheet sheet(_T("Simple PropertySheet"));
CStylePage pageStyle;
CColorPage pageColor;
CShapePage pageShape;
sheet.AddPage(&pageStyle);
sheet.AddPage(&pageColor);
sheet.AddPage(&pageShape);
sheet.SetWizardMode();
sheet.DoModal();
Consulte também
Exemplo MFC CMNCTRL1
Exemplo MFC CMNCTRL2
Exemplo MFC PROPDLG
Exemplo MFC SNAPVW
CWnd Classe
Gráfico de Hierarquia