Criando uma folha de propriedades sem janela restrita
Normalmente, as folhas de propriedades que você criar será restritas.Ao usar uma folha de propriedades de janela restrita, o usuário deve fechar a folha de propriedades antes de usar qualquer outra parte do aplicativo.Este artigo descreve métodos que você pode usar para criar uma folha de propriedades sem janela restrita que permite ao usuário manter a folha de propriedades aberta enquanto estiver usando outras partes do aplicativo.
Para exibir uma folha de propriedades como uma caixa de diálogo sem janela restrita em vez de como uma caixa de diálogo modal, chame CPropertySheet::Create em vez de DoModal.Você também deve implementar algumas tarefas adicionais para dar suporte a uma folha de propriedades sem janela restrita.
Uma das tarefas adicionais está trocando dados entre a folha de propriedades e o objeto externo, que ele está modificando quando a folha de propriedades é aberta.Isso é geralmente a mesma tarefa como para caixas de diálogo sem janela restrita padrão.Parte desta tarefa é implementar um canal de comunicação entre a folha de propriedades sem janela restrita e o objeto externo ao qual aplicam as configurações de propriedade.Essa implementação é muito mais fácil se você derivar uma classe de CPropertySheet para a folha de propriedades sem janela restrita.Este artigo pressupõe que você tenha feito isso.
Um método de comunicação entre a folha de propriedades sem janela restrita e o externo é definir um ponteiro para o objeto externo de folha de propriedades de objeto (a seleção atual em uma exibição, por exemplo).Definir uma função (chamada algo como SetMyExternalObject) na CPropertySheet-derivado classe para alterar o ponteiro sempre que muda o foco de um objeto externo para outro.O SetMyExternalObject função precisa redefinir as configurações de cada página de propriedades para refletir o objeto externo recém-selecionado.Para fazer isso, o SetMyExternalObject função deve ser capaz de acessar o CPropertyPage objetos que pertencem a CPropertySheet classe.
A maneira mais conveniente para fornecer acesso a páginas de propriedade em uma folha de propriedades é incorporar o CPropertyPage objetos na CPropertySheet-derivado objeto.Incorporação de CPropertyPage objetos na CPropertySheet-objeto derivado difere do design típico de caixas de diálogo modal, onde o proprietário da folha de propriedades cria o CPropertyPage objetos e passa para a folha de propriedades por meio de CPropertySheet::AddPage.
Há muitas alternativas de interface do usuário para determinar quando as configurações da folha de propriedades sem janela restrita devem ser aplicadas a um objeto externo.Uma alternativa é aplicar as configurações da página propriedade atual sempre que o usuário altera qualquer valor.Outra alternativa é fornecer um botão Aplicar, que permite ao usuário acumular alterações nas páginas de propriedades antes de confirmá-los para o objeto externo.Para obter informações sobre maneiras de lidar com o botão Aplicar, consulte o artigo tratamento botão Aplicar.