Criando uma folha de propriedades sem janela restrita
Normalmente, as folhas da propriedade que você cria serão modal. Ao usar uma folha de propriedades modal, 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 propriedade modeless que permite que o usuário mantém a folha de propriedades aberta para usar outras partes do aplicativo.
Para exibir uma folha de propriedade como uma caixa de diálogo modeless 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 propriedade modeless.
Uma das tarefas adicionais são dados de troca entre a folha de propriedades e o objeto que externo está alterando quando a folha de propriedades está aberta. Essa é geralmente a mesma tarefa que para caixas de diálogo modeless padrão. A parte desta tarefa estiver implementando um canal de comunicação entre a folha de propriedades modeless e o objeto externo ao qual as configurações de propriedade se aplica. Essa implementação é muito mais fácil se você deve derivar uma classe de CPropertySheet para a folha de propriedades modeless. Este artigo que você tiver feito isso.
Um método para comunicação entre a folha de propriedades modeless e o objeto externa (a seleção atual em uma exibição, por exemplo) é definir um ponteiro de folha de propriedade do objeto externo. Defina uma função (chamada algo como SetMyExternalObject) em CPropertySheet- classe derivada para alterar o ponteiro sempre que o foco for alterada de um objeto externa para outro. A função de SetMyExternalObject precisará redefinir as configurações para que cada página de propriedades reflita o objeto externo recentemente selecionado. Para fazer isso, a função de SetMyExternalObject deve poder acessar os objetos de CPropertyPage que pertencem à classe de CPropertySheet .
A maneira mais conveniente de fornecer acesso às páginas de propriedades em uma folha de propriedade é inserir os objetos em CPropertySheet- objeto derivado de CPropertyPage . A inserção CPropertyPage objetos em CPropertySheet- o objeto derivado difere de design típico para as caixas de diálogo modal, onde o proprietário da folha de propriedades cria os objetos de CPropertyPage e os passa para a folha de propriedade por meio de CPropertySheet::AddPage.
Há muitas alternativas da interface do usuário para determinar quando as configurações de folha de propriedade modeless devem ser aplicadas a um objeto externo. Uma alternativa é aplicar as configurações da página de propriedades atual sempre que o usuário modifica qualquer valor. Outra alternativa é fornecer um botão ser aplicado, que permite que o usuário acumule alterações nas páginas de propriedades antes de confirmar ao objeto externo. Para obter informações sobre as maneiras para controlar o botão aplicados, consulte o artigo Tratando o botão ser aplicado.