A classe CComboBox fornece a funcionalidade de uma caixa de combinação de Windows.
Uma caixa de combinação consiste em uma caixa de listagem combinada com um Controlarar estático ou Controlarar de editar. A parte de caixa de lista do Controlarar pode ser exibido em todos os momentos ou só pode cair para baixo quando o usuário seleciona o Soltar-seta para baixo Avançar para o Controlarar.
O item atualmente selecionado (se houver) na caixa de listagem é exibido no estático ou Controlarar de editar. Além disso, se a caixa de combinação tem o estilo de lista suspensa, o usuário pode digitar o caractere inicial de um dos itens na lista e a caixa de lista, caso esteja visível, realçará segue com esse caractere inicial.
A tabela a seguir compara o caixa de combi&nação três estilos.nbsp;
Estilo
Quando está a caixa de listagem visível?
Controlarar estático ou editar?
Simples
Sempre
Editar
Soltar-para baixo
Quando solta para baixo
Editar
Na lista suspensa
Quando solta para baixo
Estático
Você pode criar um objeto CComboBox de um modelo de caixa de diálogo ou diretamente em seu código. Em ambos os casos, primeiro chame o Construtor CComboBox para construir o objeto de CComboBox ; em seguida, chamar a criar função de membro para criar o Controlarar e anexá-lo para o objeto CComboBox.
Se você deseja manipular mensagens de notificação do Windows enviadas por uma caixa de combinação para seu pai (geralmente uma classe derivada de CDialog), adicionar uma função de membro de mapa de mensagens entrada e o manipulador de mensagem para a classe pai para cada mensagem.
Cada entrada de mapa de Mensagemens assume a seguinte forma:
ON_Notificação(id,memberFxn void)
onde id especifica a identificação de janela filho do Controlarar caixa de combinação enviando a notificação e memberFxn é o nome da função de membro pai que você escreveu para manipular a notificação.
Protótipo de função do pai é o seguinte:
afx_msgprivatevoidmemberFxn();
A ordem em que determinados notificações serão enviadas não pode ser prevista. Em particular, uma notificação de CBN_SELCHANGE pode ocorrer antes ou após uma notificação CBN_CLOSEUP.
Entradas de mapa de Mensagemens possíveis são as seguintes:
O&N_CBN_CLOSEUPnbsp; (Windows 3.1 e posterior). Caixa de listagem de uma caixa de combinação foi fechada. Essa mensagem de notificação não é enviada para uma caixa de combinação que tem o estilo CBS_SIMPLE.
O&N_CBN_DBLCLKnbsp; O usuário clica Duplo em uma Cadeia de Caracteres nCaixa de listagem de uma caixa de combinação. Esta mensagem notificação é enviada somente para uma caixa de combinação com o estilo CBS_SIMPLE . Para uma caixa de combinação com o CBS_DROPDOWN ou CBS_DROPDOWNLIST estilo, um clique duplo não pode ocorrer porque um simples clique oculta a caixa de listagem.
O&N_CBN_DROPDOWNnbsp; Caixa de listagem de uma caixa de combinação está prestes a cair para baixo (fique visível). Essa mensagem de notificação pode ocorrer apenas para uma caixa de combinação com o CBS_DROPDOWN ou CBS_DROPDOWNLIST estilo.
O&N_CBN_EDITCHANGEnbsp; O usuário executou uma ação que pode ter alterado o texto na parte de Controlarar de Editarar de uma caixa de combinação. Ao contrário de mensagem CBN_EDITUPDATE , esta mensagem é enviada após a tela de atualizações do Windows. Ele não é enviado se a caixa de combinação tem o estilo CBS_DROPDOWNLIST.
O&N_CBN_EDITUPDATEnbsp; A parte de Controlarar de Editarar de uma caixa de combinação é sobre texto exibir alterado. Esta mensagem notificação é enviada depois que o Controlarar tiver formatado o texto mas antes ele exibe o texto. Ele não é enviado se a caixa de combinação tem o estilo CBS_DROPDOWNLIST.
O&N_CBN_ERRSPACEnbsp; A caixa de combinação não é possível alocar memória suficiente para atender uma solicitação específica.
O&N_CBN_SELENDCANCELnbsp; (Windows 3.1 e posterior). Indica que a seleção do usuário deve ser cancelada. O usuário clica em um item e, em seguida, clica em outra janela ou Controlarar para ocultar caixa de listagem de uma caixa de combinação. Esta mensagem notificação é enviada antes da mensagem de notificação de CBN_CLOSEUP para indicar que a seleção do usuário deve ser ignorada. O CBN_SELENDCANCEL ou CBN_SELENDOK mensagem de notificação é enviada mesmo se a mensagem de notificação CBN_CLOSEUP não for enviada (como no caso de uma caixa de combinação com o estilo CBS_SIMPLE ).
O&N_CBN_SELENDOKnbsp; O usuário seleciona um item e pressiona a tecla ENTER ou clica a tecla de seta para baixo para ocultar caixa de listagem de uma caixa de combinação. Esta mensagem notificação é enviada antes da mensagem CBN_CLOSEUP para indicar que a seleção do usuário deve ser considerada válida. O CBN_SELENDCANCEL ou CBN_SELENDOK mensagem de notificação é enviada mesmo se a mensagem de notificação CBN_CLOSEUP não for enviada (como no caso de uma caixa de combinação com o estilo CBS_SIMPLE ).
O&N_CBN_KILLFOCUSnbsp; A caixa de combinação está perdendo o foco de entrada.
O&N_CBN_SELCHANGEnbsp; A seleção na caixa de listagem de uma caixa de combinação está prestes a ser alterado como resultado do usuário clicar na caixa de listagem ou alterar a seleção usando as teclas de seta. Ao processamento esta mensagem, o texto no Controlarar de Editar da caixa de combinação só pode ser recuperado através de GetLBText ou outra função semelhante. GetWindowText não pode ser usado.
O&N_CBN_SETFOCUSnbsp; A caixa de combinação recebe o foco de entrada.
Se você criar um objeto de CComboBox dentro de uma caixa de diálogo (através de recursos um diálogo), o objeto de CComboBox é destruído automaticamente quando o usuário fecha a caixa de diálogo.
Se você incorporar um objeto de CComboBox dentro de outro objeto de janela, você não precisará destruí-lo. Se você criar o objeto CComboBox na pilha, ele é destruído automaticamente. Se você criar o objeto CComboBox no heap usando a função de novo , você deve chamar Excluir no objeto para destruí-lo quando a caixa de combinação do Windows é destruída.