Páginas de propriedades são implementadas como objetos separados, permitir que as páginas de propriedade ser compartilhado se necessário. Para adicionar uma página de propriedades para o Controlarar, você pode usar o Assistente de objeto ATL.
Iniciar o Assistente de objeto ATL e selecione controles como a categoria do lado esquerdo. Selecionar Página de propriedades à direita e, em seguida, clique em seguinte.
Você começa novamente a caixa de diálogo permitindo que você insira o nome do novo objeto. Chamar o objeto PolyProp e digite esse nome na caixa de edição Nome curto.

Observe que a caixa de edição Interface é cinzento. Isso ocorre porque uma página de propriedades não precisa de uma interface Personalizar.
Clique na guia seqüências de caracteres para definir o título da página de propriedades. O título da página de propriedades é a Cadeia de caracteres que aparece na guia da página. Digite amp;Polígono como o título. &A Cadeia de caracteres Doc é uma descrição de um quadro de propriedade usa para colocar em uma dica de linha ou a ferramenta de status. Observe que o quadro de propriedade padrão no momento não usa essa Cadeia de caracteres, mas você pode configurá-lo de qualquer maneira. Você não vai gerar um Helpfile no momento, então apagar a entrada nessa caixa de texto. Clique em OK e a propriedade página objeto será criado.

São criados três arquivos a seguir:
| Arquivo | Descrição |
| Polyprop. H | Contém a classe do C++ CPolyProp , que implementa a página de propriedade. |
| Polyprop. cpp | Inclui o arquivo PolyProp. H. |
| Polyprop. RGS | O script de Registro registra o objeto de página de propriedade. |
Também são feitas as seguintes alterações de código:
PolyProp classe é adicionado ao arquivo polígono. IDL.
Agora, adicione os campos que você deseja que apareça na página de propriedades. Observe que em Polygon.rc a caixa de diálogo é vazio, exceto para um rótulo que diz a você para inserir seus controles aqui. Excluir esse rótulo e adicionar um que contém o texto "lados:". Próximo ao rótulo adicionar uma caixa de edição e dê a ele uma identificação deIDC_SIDES.

Incluir Polygon.h na parte superior do arquivo PolyProp. H:
# i&nclude "Polygon.h"nbsp; / / definição de IPolyCtl
Agora activar o CPolyProp classe para definir o número de lados em seu objeto quando o botão aplicar é pressionado. Alterar o Apply função em Polyprop. H da seguinte maneira.
STDMETHOD(Apply)(void)
{
USES_CONVERSION;
ATLTRACE(_T("CPolyProp::Apply\n"));
para (UINT I = 0; i lt; m_nObjects; i + +)
{
CComQIPtr < IPolyCtl & IID_IPolyCtl > pPoly(m_ppUnk[i]);
curta-nSides = (short)GetDlgItemInt(IDC_SIDES);
se falhou (pPoly - > put_Sides(nSides))
{
PError CComPtr <IErrorInfo>;
CComBSTR strError;
GetErrorInfo (0, & pError);
pError - > GetDescription(&strError);
MessageBox(OLE2T(strError), _T("Error"), MB_ICONEXCLAMATION);
retornar E_FAIL;
}
}
m_bDirty = FALSE;
retornar S_OK;
}
Uma página de propriedade poderia ter mais de um cliente anexado a ele ao mesmo tempo, para que o Apply função faz um loop em torno e chamadas put_Sides em cada cliente com o valor obtido na caixa Editar. Você está usando CComQIPtr classe, que executa o QueryInterface em cada objeto para obter o IPolyCtl interface de IUnknown (armazenado na m_ppUnk matriz).
O código agora verifica que a configuração a propriedade de lados realmente funcionou. Se ele falhar, o código exibe uma caixa de mensagem exibindo detalhes do erro da interface IErrorInfo . Normalmente, um contêiner solicita um objeto para a interface de ISupportErrorInfo e chama InterfaceSupportsErrorInfo primeiro, para determinar se o objeto oferece suporte a informações de erro de configuração. Mas desde que é seu controle, você pode renunciar a essa verificação.
CComPtr ajudará por automaticamente Manipulação a referência contagem, portanto você não precisará chamar Release sobre a interface. CComBSTR ajuda com BSTR processar, assim você não precisa executar o final chamar SysFreeString . Você também usa uma das várias classes de conversão de Cadeia de caracteres, assim você pode converter o BSTR se necessário (é por isso vamos adicionar a macro USES_CONVERSION no início da função).
Você também deve definir o sinalizador sujo da página de propriedades para indicar que o botão aplicar deve ser habilitado. Isso ocorre quando o usuário altera o valor na caixa de editar os lados. Botão direito do mouse a classe de página propriedade (CPolyProp) no ClassView e, em seguida, selecione Add Windows Mensagem Handler... de menu.nbsp de atalho; Selecione IDC_SIDES na caixa objeto e, em seguida, adicionar a mensagem E&N_CHANGE.
Agora adicione o seguinte código em Polyprop. h para o OnChangeSides função (excluindo qualquer código que o assistente colocar lá):
LRESULT OnCh&angeSides(WORD wNotify, WORD wID, HWND hWnd, BOOLamp; bHandled)
{
SetDirty(TRUE);
return 0;
}
OnChangeSidesserá chamado quando uma mensagem WM_COMMAND é enviada com a notificação de EN_CHANGE para o IDC_SIDES control. OnChangeSides , em seguida, chama SetDirty e passa verdadeiro para indicar a página propriedade agora está suja e deve ser habilitado o botão aplicar.
Agora, adicione a página de propriedades para seu controle. O Assistente de objeto ATL não faz isso para você automaticamente, desde que pode haver Múltiplo controles em seu projeto. Abrir PolyCtl. H e adicionar esta linha para o mapa de propriedade.:
PROP_ENTRY ("lados", 1, CLSID_PolyProp)
Mapa de propriedade do Controlarar agora se parece com isso:
BEGIN_PROP_MAP(CPolyCtl)
PROP_DATA_ENTRY ("_cx", m_sizeExtent.cx, VT_UI4)
PROP_DATA_ENTRY ("_cy", m_sizeExtent.cy, VT_UI4)
PROP_ENTRY ("FillColor", DISPID_FILLCOLOR, CLSID_StockColorPage)
PROP_ENTRY ("lados", 1, CLSID_PolyProp)
/ / Entradas de exemplo
/ / PROP_ENTRY ("Descrição da propriedade", dispid, clsid)
/ / PROP_PAGE(CLSID_StockColorPage)
END_PROP_MAP()
Você poderia ter adicionado um PROP_PAGE macro com o CLSID da página propriedade, mas se você usar o PROP_ENTRY macro como mostrado, os lados valor da propriedade também é salvas quando o Controlarar for salvo. Os três parâmetros para a macro são a descrição da propriedade, o DISPID da propriedade e o CLSID da página de propriedade que tenha a propriedade sobre ele. Isso é útil se, por exemplo, carregar o controle no Visual Basic e definir o número de lados em tempo de design. Uma vez que o número de lados é salvo, quando você recarregar seu projeto Visual Basic, que o número de lados será restaurado.
Agora construir esse Controlarar e inseri-lo no Controlarar ActiveX teste recipiente. No Contêiner de teste, clique no menu Editar em Objeto de classe PolyCtl. A página de propriedade é exibida; escolheu a guia de polígono.

O botão aplicar inicialmente está desativado. Caixa de edição de iniciar digitar um valor em ambos os lados e vai tornar-se habilitado o botão Aplicar. Depois que você tiver terminado de inserir o valor, clique no botão aplicar . As alterações de exibição de controle e o botão aplicar novamente está desabilitado. Tente digitar um valor inválido e você deverá ver uma caixa de mensagem que contém a descrição de erro que você definir a partir do put_Sides função.
Em seguida você vai colocar o Controlarar em uma página da Web.
Voltar para a etapa 5 |nbsp; A etapa 7