Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Fornece a funcionalidade de uma caixa de combinação do Windows.
Syntax
class CComboBox : public CWnd
Members
Public Constructors
| Name | Description |
|---|---|
CComboBox::CComboBox |
Constrói um objeto CComboBox. |
Public Methods
| Name | Description |
|---|---|
CComboBox::AddString |
Adiciona uma cadeia de caracteres ao final da lista na caixa de listagem de uma caixa de combinação ou na posição classificada para caixas de listagem com o CBS_SORT estilo. |
CComboBox::Clear |
Exclui (limpa) a seleção atual, se houver, no controle de edição. |
CComboBox::CompareItem |
Chamado pela estrutura para determinar a posição relativa de um novo item de lista em uma caixa de combinação ordenada desenhada pelo proprietário. |
CComboBox::Copy |
Copia a seleção atual, se houver, para a Área de Transferência no CF_TEXT formato. |
CComboBox::Create |
Cria a caixa de combinação e a anexa ao CComboBox objeto. |
CComboBox::Cut |
Exclui (corta) a seleção atual, se houver, no controle de edição e copia o texto excluído para a Área de Transferência no CF_TEXT formato. |
CComboBox::DeleteItem |
Chamado pela estrutura quando um item de lista é excluído de uma caixa de combinação desenhada pelo proprietário. |
CComboBox::DeleteString |
Exclui uma cadeia de caracteres da caixa de listagem de uma caixa de combinação. |
CComboBox::Dir |
Adiciona uma lista de nomes de arquivo à caixa de listagem de uma caixa de combinação. |
CComboBox::DrawItem |
Chamado pela estrutura quando um aspeto visual de uma caixa de combinação desenhada pelo proprietário muda. |
CComboBox::FindString |
Localiza a primeira cadeia de caracteres que contém o prefixo especificado na caixa de listagem de uma caixa de combinação. |
CComboBox::FindStringExact |
Localiza a primeira cadeia de caracteres da caixa de listagem (em uma caixa de combinação) que corresponde à cadeia de caracteres especificada. |
CComboBox::GetComboBoxInfo |
Recupera informações sobre o CComboBox objeto. |
CComboBox::GetCount |
Recupera o número de itens na caixa de listagem de uma caixa de combinação. |
CComboBox::GetCueBanner |
Obtém o texto de sinalização que é exibido para um controle de caixa de combinação. |
CComboBox::GetCurSel |
Recupera o índice do item selecionado no momento, se houver, na caixa de listagem de uma caixa de combinação. |
CComboBox::GetDroppedControlRect |
Recupera as coordenadas da tela da caixa de listagem visível (suspensa) de uma caixa de combinação suspensa. |
CComboBox::GetDroppedState |
Determina se a caixa de listagem de uma caixa de combinação suspensa está visível (suspensa). |
CComboBox::GetDroppedWidth |
Recupera a largura mínima permitida para a parte da caixa de listagem suspensa de uma caixa de combinação. |
CComboBox::GetEditSel |
Obtém as posições dos caracteres inicial e final da seleção atual no controle de edição de uma caixa de combinação. |
CComboBox::GetExtendedUI |
Determina se uma caixa de combinação tem a interface do usuário padrão ou a interface do usuário estendida. |
CComboBox::GetHorizontalExtent |
Retorna a largura em pixels que a parte da caixa de listagem da caixa de combinação pode ser rolada horizontalmente. |
CComboBox::GetItemData |
Recupera o valor de 32 bits fornecido pelo aplicativo associado ao item de caixa de combinação especificado. |
CComboBox::GetItemDataPtr |
Recupera o ponteiro de 32 bits fornecido pelo aplicativo que está associado ao item de caixa de combinação especificado. |
CComboBox::GetItemHeight |
Recupera a altura dos itens de lista em uma caixa de combinação. |
CComboBox::GetLBText |
Obtém uma cadeia de caracteres da caixa de listagem de uma caixa de combinação. |
CComboBox::GetLBTextLen |
Obtém o comprimento de uma cadeia de caracteres na caixa de listagem de uma caixa de combinação. |
CComboBox::GetLocale |
Recupera o identificador de localidade de uma caixa de combinação. |
CComboBox::GetMinVisible |
Obtém o número mínimo de itens visíveis na lista suspensa da caixa de combinação atual. |
CComboBox::GetTopIndex |
Retorna o índice do primeiro item visível na parte da caixa de listagem da caixa de combinação. |
CComboBox::InitStorage |
Pré-aloca blocos de memória para itens e cadeias de caracteres na parte da caixa de listagem da caixa de combinação. |
CComboBox::InsertString |
Insere uma cadeia de caracteres na caixa de listagem de uma caixa de combinação. |
CComboBox::LimitText |
Limita o comprimento do texto que o usuário pode inserir no controle de edição de uma caixa de combinação. |
CComboBox::MeasureItem |
Chamado pela estrutura para determinar as dimensões da caixa de combinação quando uma caixa de combinação desenhada pelo proprietário é criada. |
CComboBox::Paste |
Insere os dados da Área de Transferência no controle de edição na posição atual do cursor. Os dados são inseridos somente se a Área de Transferência contiver dados no CF_TEXT formato. |
CComboBox::ResetContent |
Remove todos os itens da caixa de listagem e edita o controle de uma caixa de combinação. |
CComboBox::SelectString |
Procura uma cadeia de caracteres na caixa de listagem de uma caixa de combinação e, se a cadeia de caracteres for encontrada, seleciona a cadeia de caracteres na caixa de listagem e copia a cadeia de caracteres para o controle de edição. |
CComboBox::SetCueBanner |
Define o texto de sinalização que é exibido para um controle de caixa de combinação. |
CComboBox::SetCurSel |
Seleciona uma cadeia de caracteres na caixa de listagem de uma caixa de combinação. |
CComboBox::SetDroppedWidth |
Define a largura mínima permitida para a parte da caixa de listagem suspensa de uma caixa de combinação. |
CComboBox::SetEditSel |
Seleciona caracteres no controle de edição de uma caixa de combinação. |
CComboBox::SetExtendedUI |
Seleciona a interface do usuário padrão ou a interface do usuário estendida para uma caixa de combinação que tem o CBS_DROPDOWN estilo ou CBS_DROPDOWNLIST . |
CComboBox::SetHorizontalExtent |
Define a largura em pixels que a parte da caixa de listagem da caixa de combinação pode ser rolada horizontalmente. |
CComboBox::SetItemData |
Define o valor de 32 bits associado ao item especificado em uma caixa de combinação. |
CComboBox::SetItemDataPtr |
Define o ponteiro de 32 bits associado ao item especificado em uma caixa de combinação. |
CComboBox::SetItemHeight |
Define a altura dos itens de lista em uma caixa de combinação ou a altura da parte de controle de edição (ou texto estático) de uma caixa de combinação. |
CComboBox::SetLocale |
Define o identificador de localidade para uma caixa de combinação. |
CComboBox::SetMinVisibleItems |
Define o número mínimo de itens visíveis na lista suspensa da caixa de combinação atual. |
CComboBox::SetTopIndex |
Informa a parte da caixa de listagem da caixa de combinação para exibir o item com o índice especificado na parte superior. |
CComboBox::ShowDropDown |
Mostra ou oculta a caixa de listagem de uma caixa de combinação que tem o CBS_DROPDOWN estilo ou CBS_DROPDOWNLIST . |
Remarks
Uma caixa de combinação consiste em uma caixa de listagem combinada com um controle estático ou um controle de edição. A parte da caixa de listagem do controle pode ser exibida o tempo todo ou só pode ser suspensa quando o usuário seleciona a seta suspensa ao lado do controle.
O item atualmente selecionado (se houver) na caixa de listagem é exibido no controle estático ou de edição. Além disso, se a caixa de combinação tiver o estilo de lista suspensa, o usuário poderá digitar o caractere inicial de um dos itens na lista, e a caixa de listagem, se visível, destacará o próximo item com esse caractere inicial.
A tabela a seguir compara os três estilos de caixa de combinação.
| Style | Quando a caixa de listagem está visível | Controle estático ou de edição |
|---|---|---|
| Simple | Always | Edit |
| Drop-down | Quando caiu | Edit |
| Drop-down list | Quando caiu | Static |
Você pode criar um CComboBox objeto a partir de um modelo de diálogo ou diretamente em seu código. Em ambos os casos, primeiro chame o construtor CComboBox para construir o CComboBox objeto e, em seguida, chame a Create função de membro para criar o controle e anexá-lo ao CComboBox objeto.
Se você quiser manipular mensagens de notificação do Windows enviadas por uma caixa de combinação para seu pai (geralmente uma classe derivada de ), adicione uma entrada de mapa de mensagens e uma função de membro manipulador de CDialogmensagens à classe pai para cada mensagem.
Cada entrada de mapa de mensagem assume a seguinte forma:
ON_Notification( id, memberFxn )
onde id especifica o ID da janela filho do controle de caixa de combinação que envia a notificação e memberFxn é o nome da função de membro pai que você escreveu para lidar com a notificação.
O protótipo da função pai é o seguinte:
afx_msg void memberFxn( );
A ordem pela qual certas notificações serão enviadas não pode ser prevista. Em especial, a CBN_SELCHANGE notificação pode ocorrer antes ou depois de uma CBN_CLOSEUP notificação.
As possíveis entradas do mapa de mensagens são as seguintes:
ON_CBN_CLOSEUP(Windows 3.1 e posterior.) A caixa de listagem de uma caixa de combinação foi fechada. Esta mensagem de notificação não é enviada para uma caixa de combinação que tenha oCBS_SIMPLEestilo.ON_CBN_DBLCLKO usuário clica duas vezes em uma cadeia de caracteres na caixa de listagem de uma caixa de combinação. Esta mensagem de notificação é enviada apenas para uma caixa de combinação com oCBS_SIMPLEestilo. Para uma caixa de combinação com oCBS_DROPDOWNestilo ouCBS_DROPDOWNLIST, um clique duplo não pode ocorrer porque um único clique oculta a caixa de listagem.ON_CBN_DROPDOWNA caixa de listagem de uma caixa de combinação está prestes a cair (ser tornada visível). Esta mensagem de notificação pode ocorrer apenas para uma caixa de combinação com oCBS_DROPDOWNestilo ouCBS_DROPDOWNLIST.ON_CBN_EDITCHANGEO usuário executou uma ação que pode ter alterado o texto na parte de controle de edição de uma caixa de combinação. Ao contrário daCBN_EDITUPDATEmensagem, esta mensagem é enviada depois que o Windows atualiza a tela. Não é enviado se a caixa de combinação tiver oCBS_DROPDOWNLISTestilo.ON_CBN_EDITUPDATEA parte de controle de edição de uma caixa de combinação está prestes a exibir texto alterado. Essa mensagem de notificação é enviada depois que o controle formatou o texto, mas antes de exibir o texto. Não é enviado se a caixa de combinação tiver oCBS_DROPDOWNLISTestilo.ON_CBN_ERRSPACEA caixa de combinação não pode alocar memória suficiente para atender a uma solicitação específica.ON_CBN_SELENDCANCEL(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 controle para ocultar a caixa de listagem de uma caixa de combinação. Esta mensagem de notificação é enviada antes daCBN_CLOSEUPmensagem de notificação para indicar que a seleção do usuário deve ser ignorada. ACBN_SELENDCANCELmensagem de notificação ouCBN_SELENDOKé enviada mesmo que aCBN_CLOSEUPmensagem de notificação não seja enviada (como no caso de uma caixa de combinação com oCBS_SIMPLEestilo).ON_CBN_SELENDOKO usuário seleciona um item e, em seguida, pressiona a tecla ENTER ou clica na tecla de seta para baixo para ocultar a caixa de listagem de uma caixa de combinação. Esta mensagem de notificação é enviada antes daCBN_CLOSEUPmensagem para indicar que a seleção do usuário deve ser considerada válida. ACBN_SELENDCANCELmensagem de notificação ouCBN_SELENDOKé enviada mesmo que aCBN_CLOSEUPmensagem de notificação não seja enviada (como no caso de uma caixa de combinação com oCBS_SIMPLEestilo).ON_CBN_KILLFOCUSA caixa de combinação está perdendo o foco de entrada.ON_CBN_SELCHANGEA seleção na caixa de listagem de uma caixa de combinação está prestes a ser alterada como resultado do usuário clicar na caixa de listagem ou alterar a seleção usando as teclas de seta. Ao processar esta mensagem, o texto no controle de edição da caixa de combinação só pode ser recuperado viaGetLBTextou outra função semelhante.GetWindowTextnão pode ser utilizado.ON_CBN_SETFOCUSA caixa de combinação recebe o foco de entrada.
Se você criar um CComboBox objeto dentro de uma caixa de diálogo (por meio de um recurso de diálogo), o CComboBox objeto será destruído automaticamente quando o usuário fechar a caixa de diálogo.
Se você incorporar um CComboBox objeto dentro de outro objeto de janela, não será necessário destruí-lo. Se você criar o CComboBox objeto na pilha, ele será destruído automaticamente. Se você criar o CComboBox objeto na pilha usando a new função, deverá chamar delete o objeto para destruí-lo quando a caixa de combinação do Windows for destruída.
Observação Se você quiser manipular WM_KEYDOWN e WM_CHAR mensagens, você tem que subclassificar os controles de caixa de edição e listagem da caixa de combinação, derivar classes de CEdit e CListBoxe e adicionar manipuladores para essas mensagens às classes derivadas. Para obter mais informações, consulte CWnd::SubclassWindow.
Inheritance Hierarchy
CComboBox
Requirements
Header:afxwin.h
CComboBox::AddString
Adiciona uma cadeia de caracteres à caixa de listagem de uma caixa de combinação.
int AddString(LPCTSTR lpszString);
Parameters
lpszString
Aponta para a cadeia de caracteres terminada em nulo que deve ser adicionada.
Return Value
Se o valor de retorno for maior ou igual a 0, ele será o índice baseado em zero para a cadeia de caracteres na caixa de listagem. O valor de retorno é CB_ERR se ocorrer um erro, o valor de retorno é CB_ERRSPACE se não houver espaço suficiente disponível para armazenar a nova cadeia de caracteres.
Remarks
Se a caixa de listagem não foi criada com o CBS_SORT estilo, a cadeia de caracteres é adicionada ao final da lista. Caso contrário, a cadeia de caracteres é inserida na lista e a lista é classificada.
Note
Esta função não é suportada pelo controlo Windows ComboBoxEx . Para obter mais informações sobre esse controle, consulte ComboBoxEx Controles no SDK do Windows.
Para inserir uma cadeia de caracteres em um local específico dentro da lista, use a InsertString função membro.
Example
// Add 20 items to the combo box.
CString str;
for (int i = 0; i < 20; i++)
{
str.Format(_T("item string %d"), i);
m_pComboBox->AddString(str);
}
CComboBox::CComboBox
Constrói um objeto CComboBox.
CComboBox();
Example
// Declare a local CComboBox object.
CComboBox myComboBox;
// Declare a dynamic CComboBox object.
CComboBox *pmyComboBox = new CComboBox;
CComboBox::Clear
Exclui (limpa) a seleção atual, se houver, no controle de edição da caixa de combinação.
void Clear();
Remarks
Para excluir a seleção atual e colocar o conteúdo excluído na Área de Transferência, use a Cut função de membro.
Example
// Delete all of the text from the combo box's edit control.
m_MyComboBox.SetEditSel(0, -1);
m_MyComboBox.Clear();
CComboBox::CompareItem
Chamado pela estrutura para determinar a posição relativa de um novo item na parte da caixa de listagem de uma caixa de combinação de sorteio do proprietário classificada.
virtual int CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct);
Parameters
lpCompareItemStruct
Um longo ponteiro para uma COMPAREITEMSTRUCT estrutura.
Return Value
Indica a posição relativa dos dois itens descritos na COMPAREITEMSTRUCT estrutura. Pode ser qualquer um dos seguintes valores:
| Value | Meaning |
|---|---|
| - 1 | O item 1 classifica antes do item 2. |
| 0 | O item 1 e o item 2 classificam da mesma forma. |
| 1 | O item 1 classifica após o item 2. |
Consulte CWnd::OnCompareItem para obter uma descrição do COMPAREITEMSTRUCT.
Remarks
Por padrão, essa função de membro não faz nada. Se você criar uma caixa de combinação proprietário-desenhar com o LBS_SORT estilo, deverá substituir essa função de membro para ajudar a estrutura a classificar novos itens adicionados à caixa de listagem.
Example
// CMyComboBox is my owner-drawn combo box derived from CComboBox. This
// example compares two items using strcmp to sort items in reverse
// alphabetical order. The combo box control was created with the
// following code:
// pmyComboBox->Create(
// WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
// CBS_SORT|CBS_OWNERDRAWVARIABLE,
// myRect, pParentWnd, 1);
//
int CMyComboBox::CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct)
{
int iComp = 0;
ASSERT(lpCompareItemStruct->CtlType == ODT_COMBOBOX);
LPCTSTR lpszText1 = (LPCTSTR)lpCompareItemStruct->itemData1;
ASSERT(lpszText1 != NULL);
LPCTSTR lpszText2 = (LPCTSTR)lpCompareItemStruct->itemData2;
ASSERT(lpszText2 != NULL);
if (NULL != lpszText1 && NULL != lpszText2)
{
iComp = _tcscmp(lpszText2, lpszText1);
}
return iComp;
}
CComboBox::Copy
Copia a seleção atual, se houver, no controle de edição da caixa de combinação para a Área de Transferência no CF_TEXT formato.
void Copy();
Example
// Copy all of the text from the combo box's edit control
// to the clipboard.
m_MyComboBox.SetEditSel(0, -1);
m_MyComboBox.Copy();
CComboBox::Create
Cria a caixa de combinação e a anexa ao CComboBox objeto.
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parameters
dwStyle
Especifica o estilo da caixa de combinação. Aplique qualquer combinação de estilos de caixa de combinação à caixa.
rect
Aponta para a posição e o tamanho da caixa de combinação. Pode ser uma RECT estrutura ou um CRect objeto.
pParentWnd
Especifica a janela pai da caixa de combinação (geralmente um CDialog). Não pode ser NULL.
nID
Especifica a ID de controle da caixa de combinação.
Return Value
Diferente de zero se for bem-sucedido; caso contrário, 0.
Remarks
Você constrói um CComboBox objeto em duas etapas. Primeiro, chame o construtor e, em seguida, chame Create, que cria a caixa de combinação do Windows e a anexa ao CComboBox objeto.
Quando Create executado, o Windows envia as WM_NCCREATEmensagens , WM_CREATE, WM_NCCALCSIZEe WM_GETMINMAXINFO para a caixa de combinação.
Essas mensagens são manipuladas por padrão pelas OnNcCreatefunções , OnCreate, OnNcCalcSizee OnGetMinMaxInfo membro na CWnd classe base. Para estender o tratamento de mensagens padrão, derive uma classe de , adicione um mapa de mensagens à nova classe e substitua as funções de membro do manipulador de CComboBoxmensagens anteriores. Substitua OnCreate, por exemplo, para executar a inicialização necessária para uma nova classe.
Aplique os seguintes estilos de janela a um controle de caixa de combinação. :
WS_CHILDSempreWS_VISIBLENormalmenteWS_DISABLEDRaramenteWS_VSCROLLPara adicionar rolagem vertical para a caixa de listagem na caixa de combinaçãoWS_HSCROLLPara adicionar rolagem horizontal para a caixa de listagem na caixa de combinaçãoWS_GROUPPara agrupar controlesWS_TABSTOPPara incluir a caixa de combinação na ordem de tabulação
Example
m_pComboBox->Create(
WS_CHILD | WS_VISIBLE | WS_VSCROLL | CBS_DROPDOWNLIST,
CRect(10, 10, 200, 100), pParentWnd, 1);
CComboBox::Cut
Exclui (corta) a seleção atual, se houver, no controle de edição da caixa de combinação e copia o texto excluído para a Área de Transferência no CF_TEXT formato.
void Cut();
Remarks
Para excluir a seleção atual sem colocar o texto excluído na Área de Transferência, chame a Clear função de membro.
Example
// Delete all of the text from the combo box's edit control and copy it
// to the clipboard.
m_MyComboBox.SetEditSel(0, -1);
m_MyComboBox.Cut();
CComboBox::DeleteItem
Chamado pela estrutura quando o usuário exclui um item de um objeto de desenho CComboBox do proprietário ou destrói a caixa de combinação.
virtual void DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct);
Parameters
lpDeleteItemStruct
Um ponteiro longo para uma estrutura do Windows DELETEITEMSTRUCT que contém informações sobre o item excluído. Consulte CWnd::OnDeleteItem para obter uma descrição desta estrutura.
Remarks
A implementação padrão desta função não faz nada. Substitua essa função para redesenhar a caixa de combinação conforme necessário.
Example
// CMyComboBox is my owner-drawn combo box derived from CComboBox. This
// example simply dumps the item's text. The combo box control was
// created with the following code:
// pmyComboBox->Create(
// WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
// CBS_SORT|CBS_OWNERDRAWVARIABLE,
// myRect, pParentWnd, 1);
//
void CMyComboBox::DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct)
{
ASSERT(lpDeleteItemStruct->CtlType == ODT_COMBOBOX);
LPTSTR lpszText = (LPTSTR)lpDeleteItemStruct->itemData;
ASSERT(lpszText != NULL);
AFXDUMP(lpszText);
}
CComboBox::DeleteString
Exclui o item na posição nIndex da caixa de combinação.
int DeleteString(UINT nIndex);
Parameters
nIndex
Especifica o índice para a cadeia de caracteres que deve ser excluída.
Return Value
Se o valor de retorno for maior ou igual a 0, então é uma contagem das cadeias de caracteres restantes na lista. O valor de retorno é CB_ERR se nIndex especificar um índice maior do que o número de itens na lista.
Remarks
Todos os itens seguintes nIndex agora descem uma posição. Por exemplo, se uma caixa de combinação contiver dois itens, excluir o primeiro item fará com que o item restante esteja agora na primeira posição.
nIndex=0 para o item na primeira posição.
Example
// Delete every item from the combo box.
for (int i = m_pComboBox->GetCount() - 1; i >= 0; i--)
{
m_pComboBox->DeleteString(i);
}
CComboBox::Dir
Adiciona uma lista de nomes de arquivos ou unidades à caixa de listagem de uma caixa de combinação.
int Dir(
UINT attr,
LPCTSTR lpszWildCard);
Parameters
attr
Pode ser qualquer combinação dos enum valores descritos ou CFile::GetStatus qualquer combinação dos seguintes valores:
DDL_READWRITEO arquivo pode ser lido ou gravado.DDL_READONLYO arquivo pode ser lido, mas não gravado.DDL_HIDDENO arquivo está oculto e não aparece em uma listagem de diretório.DDL_SYSTEMO ficheiro é um ficheiro de sistema.DDL_DIRECTORYO nome especificado porlpszWildCardespecifica um diretório.DDL_ARCHIVEO ficheiro foi arquivado.DDL_DRIVESInclua todas as unidades que correspondam ao nome especificado porlpszWildCard.DDL_EXCLUSIVEBandeira exclusiva. Se o sinalizador exclusivo estiver definido, somente os arquivos do tipo especificado serão listados. Caso contrário, os arquivos do tipo especificado são listados além dos arquivos "normais".
lpszWildCard
Aponta para uma cadeia de caracteres de especificação de arquivo. A cadeia de caracteres pode conter curingas (por exemplo, *.*).
Return Value
Se o valor de retorno for maior ou igual a 0, ele será o índice baseado em zero do último nome de arquivo adicionado à lista. O valor de retorno é CB_ERR se ocorrer um erro, o valor de retorno é CB_ERRSPACE se não houver espaço suficiente disponível para armazenar as novas cadeias de caracteres.
Remarks
Esta função não é suportada pelo controlo Windows ComboBoxEx . Para obter mais informações sobre esse controle, consulte ComboBoxEx Controles no SDK do Windows.
Example
// Add all the files and directories in the windows directory.
TCHAR lpszWinPath[MAX_PATH], lpszOldPath[MAX_PATH];
VERIFY(0 < ::GetWindowsDirectory(lpszWinPath, MAX_PATH));
// Make the windows directory the current directory.
::GetCurrentDirectory(MAX_PATH, lpszOldPath);
::SetCurrentDirectory(lpszWinPath);
m_pComboBox->ResetContent();
m_pComboBox->Dir(DDL_READWRITE | DDL_DIRECTORY, _T("*.*"));
// Reset the current directory to its previous path.
::SetCurrentDirectory(lpszOldPath);
CComboBox::DrawItem
Chamado pela estrutura quando um aspeto visual de uma caixa de combinação de desenho do proprietário muda.
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
Parameters
lpDrawItemStruct
Um ponteiro para uma DRAWITEMSTRUCT estrutura que contém informações sobre o tipo de desenho necessário.
Remarks
O itemAction membro da estrutura define a DRAWITEMSTRUCT ação de desenho que deve ser executada. Consulte CWnd::OnDrawItem para obter uma descrição desta estrutura.
Por padrão, essa função de membro não faz nada. Substitua essa função de membro para implementar o desenho de um objeto owner-draw CComboBox . Antes que essa função de membro seja encerrada, o aplicativo deve restaurar todos os objetos de interface de dispositivo gráfico (GDI) selecionados para o contexto de exibição fornecido no lpDrawItemStruct.
Example
// CMyComboBox is my owner-drawn combo box derived from CComboBox. This
// example draws an item's text centered vertically and horizontally. The
// combo box control was created with the following code:
// pmyComboBox->Create(
// WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
// CBS_SORT|CBS_OWNERDRAWVARIABLE,
// myRect, pParentWnd, 1);
//
void CMyComboBox::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
ASSERT(lpDrawItemStruct->CtlType == ODT_COMBOBOX);
LPCTSTR lpszText = (LPCTSTR)lpDrawItemStruct->itemData;
ASSERT(lpszText != NULL);
CDC dc;
dc.Attach(lpDrawItemStruct->hDC);
// Save these value to restore them when done drawing.
COLORREF crOldTextColor = dc.GetTextColor();
COLORREF crOldBkColor = dc.GetBkColor();
// If this item is selected, set the background color
// and the text color to appropriate values. Erase
// the rect by filling it with the background color.
if ((lpDrawItemStruct->itemAction & ODA_SELECT) &&
(lpDrawItemStruct->itemState & ODS_SELECTED))
{
dc.SetTextColor(::GetSysColor(COLOR_HIGHLIGHTTEXT));
dc.SetBkColor(::GetSysColor(COLOR_HIGHLIGHT));
dc.FillSolidRect(&lpDrawItemStruct->rcItem, ::GetSysColor(COLOR_HIGHLIGHT));
}
else
{
dc.FillSolidRect(&lpDrawItemStruct->rcItem, crOldBkColor);
}
// Draw the text.
dc.DrawText(
lpszText,
(int)_tcslen(lpszText),
&lpDrawItemStruct->rcItem,
DT_CENTER | DT_SINGLELINE | DT_VCENTER);
// Reset the background color and the text color back to their
// original values.
dc.SetTextColor(crOldTextColor);
dc.SetBkColor(crOldBkColor);
dc.Detach();
}
CComboBox::FindString
Localiza, mas não seleciona, a primeira cadeia de caracteres que contém o prefixo especificado na caixa de listagem de uma caixa de combinação.
int FindString(
int nStartAfter,
LPCTSTR lpszString) const;
Parameters
nStartAfter
Contém o índice baseado em zero do item antes do primeiro item a ser pesquisado. Quando a pesquisa atinge a parte inferior da caixa de listagem, ela continua da parte superior da caixa de listagem de volta ao item especificado por nStartAfter. Se -1, toda a caixa de listagem é pesquisada desde o início.
lpszString
Aponta para a cadeia de caracteres terminada em nulo que contém o prefixo a ser pesquisado. A pesquisa é independente de maiúsculas e minúsculas, portanto, essa cadeia de caracteres pode conter qualquer combinação de letras maiúsculas e minúsculas.
Return Value
Se o valor de retorno for maior ou igual a 0, é o índice baseado em zero do item correspondente. É CB_ERR se a pesquisa não foi bem-sucedida.
Remarks
Esta função não é suportada pelo controlo Windows ComboBoxEx . Para obter mais informações sobre esse controle, consulte ComboBoxEx Controles no SDK do Windows.
Example
// The string to match.
LPCTSTR lpszmyString = _T("item");
// Delete all items that begin with the specified string.
int nItem = 0;
while ((nItem = m_pComboBox->FindString(nItem, lpszmyString)) != CB_ERR)
{
m_pComboBox->DeleteString(nItem);
}
CComboBox::FindStringExact
Chame a FindStringExact função de membro para localizar a primeira cadeia de caracteres de caixa de listagem (em uma caixa de combinação) que corresponda à cadeia de caracteres especificada em lpszFind.
int FindStringExact(
int nIndexStart,
LPCTSTR lpszFind) const;
Parameters
nIndexStart
Especifica o índice baseado em zero do item antes do primeiro item a ser pesquisado. Quando a pesquisa atinge a parte inferior da caixa de listagem, ela continua da parte superior da caixa de listagem de volta ao item especificado por nIndexStart. Se nIndexStart for -1, toda a caixa de listagem é pesquisada desde o início.
lpszFind
Aponta para a cadeia de caracteres terminada em nulo a ser pesquisada. Essa cadeia de caracteres pode conter um nome de arquivo completo, incluindo a extensão. A pesquisa não diferencia maiúsculas de minúsculas, portanto, essa cadeia de caracteres pode conter qualquer combinação de letras maiúsculas e minúsculas.
Return Value
O índice baseado em zero do item correspondente ou CB_ERR se a pesquisa não foi bem-sucedida.
Remarks
Se a caixa de combinação foi criada com um estilo de desenho do proprietário, mas sem o CBS_HASSTRINGS estilo, FindStringExact tenta corresponder o valor de palavra dupla com o valor de lpszFind.
Example
// The string to match.
LPCTSTR lpszmyExactString = _T("item 5");
// Delete all items that exactly match the specified string.
int nDex = 0;
while ((nDex = m_pComboBox->FindStringExact(nDex, lpszmyExactString)) != CB_ERR)
{
m_pComboBox->DeleteString(nDex);
}
CComboBox::GetComboBoxInfo
Recupera informações para o CComboBox objeto.
BOOL GetComboBoxInfo(PCOMBOBOXINFO pcbi) const;
Parameters
pcbi
Um ponteiro para a COMBOBOXINFO estrutura.
Return Value
Retorna TRUE no sucesso, FALSE no fracasso.
Remarks
Essa função de membro emula a CB_GETCOMBOBOXINFO funcionalidade da mensagem, conforme descrito no SDK do Windows.
CComboBox::GetCount
Chame essa função de membro para recuperar o número de itens na parte da caixa de listagem de uma caixa de combinação.
int GetCount() const;
Return Value
O número de itens. A contagem retornada é maior do que o valor do índice do último item (o índice é baseado em zero). É CB_ERR se ocorrer um erro.
Example
// Add 10 items to the combo box.
CString strItem;
for (int i = 0; i < 10; i++)
{
strItem.Format(_T("item %d"), i);
m_pComboBox->AddString(strItem);
}
// Verify the 10 items were added to the combo box.
ASSERT(m_pComboBox->GetCount() == 10);
CComboBox::GetCueBanner
Obtém o texto de sinalização que é exibido para um controle de caixa de combinação.
CString GetCueBanner() const;
BOOL GetCueBanner(
LPTSTR lpszText,
int cchText) const;
Parameters
lpszText
[saídas] Ponteiro para um buffer que recebe o texto do banner de sinalização.
cchText
[em] Tamanho do buffer para o qual o lpszText parâmetro aponta.
Return Value
Na primeira sobrecarga, um CString objeto que contém o texto do banner de sinalização, se existir, caso contrário, um CString objeto que tenha comprimento zero.
-or-
Na segunda sobrecarga, TRUE se este método for bem-sucedido, caso contrário, FALSE.
Remarks
Cue text é um prompt que é exibido na área de entrada do controle de caixa de combinação. O texto de sinalização é exibido até que o usuário forneça entrada.
Esse método envia a CB_GETCUEBANNER mensagem, que é descrita no SDK do Windows.
CComboBox::GetCurSel
Chame essa função de membro para determinar qual item na caixa de combinação está selecionado.
int GetCurSel() const;
Return Value
O índice baseado em zero do item selecionado atualmente na caixa de listagem de uma caixa de combinação ou CB_ERR se nenhum item estiver selecionado.
Remarks
GetCurSel Retorna um índice na lista.
Example
// Select the next item of the currently selected item
// in the combo box.
int nIndex = m_pComboBox->GetCurSel();
int nCount = m_pComboBox->GetCount();
if ((nIndex != CB_ERR) && (nCount > 1))
{
if (++nIndex < nCount)
m_pComboBox->SetCurSel(nIndex);
else
m_pComboBox->SetCurSel(0);
}
CComboBox::GetDroppedControlRect
Chame a GetDroppedControlRect função de membro para recuperar as coordenadas da tela da caixa de listagem visível (suspensa) de uma caixa de combinação suspensa.
void GetDroppedControlRect(LPRECT lprect) const;
Parameters
lprect
Aponta para a estrutura RECT que deve receber as coordenadas.
Example
// This example move a combo box so that the upper left
// corner of the combo box is at a specific point.
// The point to move the combo box to.
CPoint myPoint(30, 10);
CRect r;
m_pComboBox->GetDroppedControlRect(&r);
m_pComboBox->GetParent()->ScreenToClient(&r);
r.OffsetRect(myPoint - r.TopLeft());
m_pComboBox->MoveWindow(&r);
CComboBox::GetDroppedState
Chame a GetDroppedState função de membro para determinar se a caixa de listagem de uma caixa de combinação suspensa está visível (suspensa).
BOOL GetDroppedState() const;
Return Value
Diferente de zero se a caixa de listagem estiver visível; caso contrário, 0.
Example
// Show the dropdown list box if it is not already dropped.
if (!m_pComboBox->GetDroppedState())
m_pComboBox->ShowDropDown(TRUE);
CComboBox::GetDroppedWidth
Chame essa função para recuperar a largura mínima permitida, em pixels, da caixa de listagem de uma caixa de combinação.
int GetDroppedWidth() const;
Return Value
Se for bem-sucedido, a largura mínima permitida, em pixels; caso contrário, CB_ERR.
Remarks
Esta função só se aplica a caixas de combinação com o CBS_DROPDOWN estilo ou CBS_DROPDOWNLIST .
Por padrão, a largura mínima permitida da caixa de listagem suspensa é 0. A largura mínima permitida pode ser definida chamando SetDroppedWidth. Quando a parte da caixa de listagem da caixa de combinação é exibida, sua largura é a maior da largura mínima permitida ou da largura da caixa de combinação.
Example
Veja o exemplo para SetDroppedWidth.
CComboBox::GetEditSel
Obtém as posições dos caracteres inicial e final da seleção atual no controle de edição de uma caixa de combinação.
DWORD GetEditSel() const;
Return Value
Um valor de 32 bits que contém a posição inicial na palavra de ordem baixa e a posição do primeiro caractere não selecionado após o final da seleção na palavra de ordem alta. Se essa função for usada em uma caixa de combinação sem um controle de edição, CB_ERR será retornada.
Example
DWORD dwSel;
// Set the selection to be all characters after the current selection.
if ((dwSel = m_MyComboBox.GetEditSel()) != CB_ERR)
{
m_MyComboBox.SetEditSel(HIWORD(dwSel), -1);
}
CComboBox::GetExtendedUI
Chame a GetExtendedUI função de membro para determinar se uma caixa de combinação tem a interface de usuário padrão ou a interface de usuário estendida.
BOOL GetExtendedUI() const;
Return Value
Diferente de zero se a caixa de combinação tiver a interface de usuário estendida; caso contrário, 0.
Remarks
A interface de usuário estendida pode ser identificada das seguintes maneiras:
Clicar no controle estático exibe a caixa de listagem somente para caixas de combinação com o
CBS_DROPDOWNLISTestilo.Pressionar a tecla SETA PARA BAIXO exibe a caixa de listagem (F4 está desativado).
A rolagem no controle estático é desabilitada quando a lista de itens não está visível (as teclas de seta estão desabilitadas).
Example
// Use the extended UI if it is not already set.
if (!m_pComboBox->GetExtendedUI())
m_pComboBox->SetExtendedUI(TRUE);
CComboBox::GetHorizontalExtent
Recupera da caixa de combinação a largura em pixels pela qual a parte da caixa de listagem da caixa de combinação pode ser rolada horizontalmente.
UINT GetHorizontalExtent() const;
Return Value
A largura rolável da parte da caixa de listagem da caixa de combinação, em pixels.
Remarks
Isso é aplicável somente se a parte da caixa de listagem da caixa de combinação tiver uma barra de rolagem horizontal.
Example
// Find the longest string in the combo box.
CString strText;
CSize sz;
UINT dxText = 0;
CDC *pDCCombo = m_pComboBox->GetDC();
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
m_pComboBox->GetLBText(i, strText);
sz = pDCCombo->GetTextExtent(strText);
if (sz.cx > (LONG)dxText)
dxText = sz.cx;
}
m_pComboBox->ReleaseDC(pDCCombo);
// Set the horizontal extent only if the current extent is not large enough.
if (m_pComboBox->GetHorizontalExtent() < dxText)
{
m_pComboBox->SetHorizontalExtent(dxText);
ASSERT(m_pComboBox->GetHorizontalExtent() == dxText);
}
CComboBox::GetItemData
Recupera o valor de 32 bits fornecido pelo aplicativo associado ao item de caixa de combinação especificado.
DWORD_PTR GetItemData(int nIndex) const;
Parameters
nIndex
Contém o índice baseado em zero de um item na caixa de listagem da caixa de combinação.
Return Value
O valor de 32 bits associado ao item ou CB_ERR se ocorrer um erro.
Remarks
O valor de 32 bits pode ser definido com o dwItemData parâmetro de uma SetItemData chamada de função membro. Use a GetItemDataPtr função de membro se o valor de 32 bits a ser recuperado for um ponteiro (void*).
Example
// If any item's data is equal to zero then reset it to -1.
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
if (m_pComboBox->GetItemData(i) == 0)
{
m_pComboBox->SetItemData(i, (DWORD)-1);
}
}
CComboBox::GetItemDataPtr
Recupera o valor de 32 bits fornecido pelo aplicativo associado ao item de caixa de combinação especificado como um ponteiro (void*).
void* GetItemDataPtr(int nIndex) const;
Parameters
nIndex
Contém o índice baseado em zero de um item na caixa de listagem da caixa de combinação.
Return Value
Recupera um ponteiro ou -1 se ocorrer um erro.
Example
LPVOID lpmyPtr = m_pComboBox->GetItemDataPtr(5);
// Check all the items in the combo box; if an item's
// data pointer is equal to my pointer then reset it to NULL.
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
if (m_pComboBox->GetItemDataPtr(i) == lpmyPtr)
{
m_pComboBox->SetItemDataPtr(i, NULL);
}
}
CComboBox::GetItemHeight
Chame a GetItemHeight função de membro para recuperar a altura dos itens de lista em uma caixa de combinação.
int GetItemHeight(int nIndex) const;
Parameters
nIndex
Especifica o componente da caixa de combinação cuja altura deve ser recuperada. Se o nIndex parâmetro for -1, a altura da parte de controle de edição (ou texto estático) da caixa de combinação será recuperada. Se a caixa de combinação tiver o CBS_OWNERDRAWVARIABLE estilo, nIndex especifica o índice baseado em zero do item de lista cuja altura deve ser recuperada. Caso contrário, nIndex deve ser definido como 0.
Return Value
A altura, em pixels, do item especificado em uma caixa de combinação. O valor de retorno é CB_ERR se ocorrer um erro.
Example
// Set the height of every item so the item
// is completely visible.
CString strLBText;
CSize size;
CDC *pDC = m_pComboBox->GetDC();
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
m_pComboBox->GetLBText(i, strLBText);
size = pDC->GetTextExtent(strLBText);
// Only want to set the item height if the current height
// is not big enough.
if (m_pComboBox->GetItemHeight(i) < size.cy)
m_pComboBox->SetItemHeight(i, size.cy);
}
m_pComboBox->ReleaseDC(pDC);
CComboBox::GetLBText
Obtém uma cadeia de caracteres da caixa de listagem de uma caixa de combinação.
int GetLBText(
int nIndex,
LPTSTR lpszText) const;
void GetLBText(
int nIndex,
CString& rString) const;
Parameters
nIndex
Contém o índice baseado em zero da cadeia de caracteres da caixa de listagem a ser copiada.
lpszText
Aponta para um buffer que deve receber a cadeia de caracteres. O buffer deve ter espaço suficiente para a cadeia de caracteres e um caractere nulo de terminação.
rString
Uma referência a um CStringarquivo .
Return Value
O comprimento (em bytes) da cadeia de caracteres, excluindo o caractere nulo de terminação. Se nIndex não especificar um índice válido, o valor de retorno será CB_ERR.
Remarks
A segunda forma desta função de membro preenche um CString objeto com o texto do item.
Se nIndex for inválida, esta função lança uma E_INVALIDARG exceção (código de erro: -2147024809, 0x80070057).
Example
// Dump all of the items in the combo box.
CString str1, str2;
int n;
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
n = m_pComboBox->GetLBTextLen(i);
m_pComboBox->GetLBText(i, str1.GetBuffer(n));
str1.ReleaseBuffer();
str2.Format(_T("item %d: %s\r\n"), i, str1.GetBuffer(0));
AFXDUMP(str2);
}
CComboBox::GetLBTextLen
Obtém o comprimento de uma cadeia de caracteres na caixa de listagem de uma caixa de combinação.
int GetLBTextLen(int nIndex) const;
Parameters
nIndex
Contém o índice baseado em zero da cadeia de caracteres da caixa de listagem.
Return Value
O comprimento da cadeia de caracteres em bytes, excluindo o caractere nulo de terminação. Se nIndex não especificar um índice válido, o valor de retorno será CB_ERR.
Example
Veja o exemplo para CComboBox::GetLBText.
CComboBox::GetLocale
Recupera a localidade usada pela caixa de combinação.
LCID GetLocale() const;
Return Value
O valor do identificador de localidade (LCID) para as cadeias de caracteres na caixa de combinação.
Remarks
A localidade é usada, por exemplo, para determinar a ordem de classificação das cadeias de caracteres em uma caixa de combinação classificada.
Example
Veja o exemplo para CComboBox::SetLocale.
CComboBox::GetMinVisible
Obtém o número mínimo de itens visíveis na lista suspensa do controle de caixa de combinação atual.
int GetMinVisible() const;
Return Value
O número mínimo de itens visíveis na lista suspensa atual.
Remarks
Esse método envia a CB_GETMINVISIBLE mensagem, que é descrita no SDK do Windows.
CComboBox::GetTopIndex
Recupera o índice baseado em zero do primeiro item visível na parte da caixa de listagem da caixa de combinação.
int GetTopIndex() const;
Return Value
O índice baseado em zero do primeiro item visível na parte da caixa de listagem da caixa de combinação, caso contrário, CB_ERR seja bem-sucedido.
Remarks
Inicialmente, o item 0 está na parte superior da caixa de listagem, mas se a caixa de listagem estiver rolada, outro item pode estar na parte superior.
Example
// Want an item in the bottom half to be the first visible item.
int nTop = m_pComboBox->GetCount() / 2;
if (m_pComboBox->GetTopIndex() < nTop)
{
m_pComboBox->SetTopIndex(nTop);
ASSERT(m_pComboBox->GetTopIndex() == nTop);
}
CComboBox::InitStorage
Aloca memória para armazenar itens da caixa de listagem na parte da caixa de listagem da caixa de combinação.
int InitStorage(
int nItems,
UINT nBytes);
Parameters
nItems
Especifica o número de itens a serem adicionados.
nBytes
Especifica a quantidade de memória, em bytes, a ser alocada para cadeias de caracteres de item.
Return Value
Se for bem-sucedida, o número máximo de itens que a parte da caixa de listagem da caixa de combinação pode armazenar antes de uma realocação de memória é necessária, caso contrário CB_ERRSPACE, o que significa que não há memória suficiente disponível.
Remarks
Chame essa função antes de adicionar um grande número de itens à parte da caixa de listagem do CComboBox.
Somente Windows 95/98: O wParam parâmetro é limitado a valores de 16 bits. Isso significa que as caixas de listagem não podem conter mais de 32.767 itens. Embora o número de itens seja restrito, o tamanho total dos itens em uma caixa de listagem é limitado apenas pela memória disponível.
Esta função ajuda a acelerar a inicialização de caixas de listagem que têm um grande número de itens (mais de 100). Ele pré-aloca a quantidade especificada de memória para que as funções subsequentes AddString, InsertString, e Dir levem o menor tempo possível. Você pode usar estimativas para os parâmetros. Se você superestimar, alguma memória extra será alocada; Se você subestimar, a alocação normal é usada para itens que excedem o valor pré-alocado.
Example
// Initialize the storage of the combo box to be 256 strings with
// about 10 characters per string, performance improvement.
int nAlloc = pmyComboBox->InitStorage(256, 10);
ASSERT(nAlloc != CB_ERRSPACE);
// Add 256 items to the combo box.
CString strAdd;
for (int i = 0; i < 256; i++)
{
strAdd.Format(_T("item string %d"), i);
m_pComboBox->AddString(strAdd);
}
CComboBox::InsertString
Insere uma cadeia de caracteres na caixa de listagem de uma caixa de combinação.
int InsertString(
int nIndex,
LPCTSTR lpszString);
Parameters
nIndex
Contém o índice baseado em zero para a posição na caixa de listagem que receberá a cadeia de caracteres. Se esse parâmetro for -1, a cadeia de caracteres será adicionada ao final da lista.
lpszString
Aponta para a cadeia de caracteres terminada em nulo que deve ser inserida.
Return Value
O índice baseado em zero da posição na qual a cadeia de caracteres foi inserida. O valor de retorno é CB_ERR se ocorrer um erro. O valor de retorno é CB_ERRSPACE se não houver espaço suficiente disponível para armazenar a nova cadeia de caracteres.
Remarks
Ao contrário da AddString função de membro, a InsertString função de membro não faz com que uma lista com o CBS_SORT estilo seja classificada.
Note
Esta função não é suportada pelo controlo Windows ComboBoxEx . Para obter mais informações sobre esse controle, consulte ComboBoxEx Controles no SDK do Windows.
Example
// Insert items in between existing items.
CString strIns;
int nItems = m_pComboBox->GetCount();
for (int i = 0; i < nItems; i++)
{
strIns.Format(_T("item string %c"), (char)('A' + i));
m_pComboBox->InsertString(2 * i, strIns);
}
CComboBox::LimitText
Limita o comprimento em bytes do texto que o usuário pode inserir no controle de edição de uma caixa de combinação.
BOOL LimitText(int nMaxChars);
Parameters
nMaxChars
Especifica o comprimento (em bytes) do texto que o usuário pode inserir. Se esse parâmetro for 0, o comprimento do texto será definido como 65.535 bytes.
Return Value
Diferente de zero se for bem-sucedido. Se for chamado para uma caixa de combinação com o estilo CBS_DROPDOWNLIST ou para uma caixa de combinação sem um controle de edição, o valor de retorno é CB_ERR.
Remarks
Se a caixa de combinação não tiver o estilo CBS_AUTOHSCROLL, definir o limite de texto para ser maior do que o tamanho do controle de edição não terá efeito.
LimitText limita apenas o texto que o usuário pode inserir. Ele não tem efeito sobre qualquer texto já no controle de edição quando a mensagem é enviada, nem afeta o comprimento do texto copiado para o controle de edição quando uma cadeia de caracteres na caixa de listagem é selecionada.
Example
// Limit the number of characters in the combo box's edit control to
// be the maximum number visible.
// Get the text metrics for the combo box; needed for the
// average character width.
TEXTMETRIC tm;
CDC *pDCCB = m_pComboBox->GetDC();
pDCCB->GetTextMetrics(&tm);
m_pComboBox->ReleaseDC(pDCCB);
CRect rect;
m_pComboBox->GetClientRect(&rect);
m_pComboBox->LimitText(rect.Width() / tm.tmAveCharWidth);
CComboBox::MeasureItem
Chamado pela estrutura quando uma caixa de combinação com um estilo de desenho do proprietário é criada.
virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
Parameters
lpMeasureItemStruct
Um longo ponteiro para uma MEASUREITEMSTRUCT estrutura.
Remarks
Por padrão, essa função de membro não faz nada. Substitua essa função de membro e preencha a estrutura para informar ao MEASUREITEMSTRUCT Windows as dimensões da caixa de listagem na caixa de combinação. Se a caixa de combinação for criada com o CBS_OWNERDRAWVARIABLE estilo, a estrutura chamará essa função de membro para cada item na caixa de listagem. Caso contrário, este membro é chamado apenas uma vez.
Usar o CBS_OWNERDRAWFIXED estilo em uma caixa de combinação proprietário-desenho criada com a SubclassDlgItem função de membro de envolve outras considerações de CWnd programação. Ver discussão na Nota Técnica 14.
Consulte CWnd::OnMeasureItem para obter uma descrição da MEASUREITEMSTRUCT estrutura.
Example
// CMyComboBox is my owner-drawn combo box derived from CComboBox. This
// example measures an item and sets the height of the item to twice the
// vertical extent of its text. The combo box control was created with
// the following code:
// pmyComboBox->Create(
// WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
// CBS_SORT|CBS_OWNERDRAWVARIABLE,
// myRect, pParentWnd, 1);
//
void CMyComboBox::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
ASSERT(lpMeasureItemStruct->CtlType == ODT_COMBOBOX);
if (lpMeasureItemStruct->itemID != (UINT)-1)
{
LPCTSTR lpszText = (LPCTSTR)lpMeasureItemStruct->itemData;
ASSERT(lpszText != NULL);
CSize sz;
CDC *pDC = GetDC();
sz = pDC->GetTextExtent(lpszText);
ReleaseDC(pDC);
lpMeasureItemStruct->itemHeight = 2 * sz.cy;
}
}
CComboBox::Paste
Insere os dados da Área de Transferência no controle de edição da caixa de combinação na posição atual do cursor.
void Paste();
Remarks
Os dados são inseridos somente se a Área de Transferência contiver dados no CF_TEXT formato.
Example
// Replace all of the text in the combo box's edit control with the text
// in the clipboard.
m_MyComboBox.SetEditSel(0, -1);
m_MyComboBox.Paste();
CComboBox::ResetContent
Remove todos os itens da caixa de listagem e edita o controle de uma caixa de combinação.
void ResetContent();
Example
// Delete all the items from the combo box.
m_pComboBox->ResetContent();
ASSERT(m_pComboBox->GetCount() == 0);
CComboBox::SelectString
Procura uma cadeia de caracteres na caixa de listagem de uma caixa de combinação e, se a cadeia de caracteres for encontrada, seleciona a cadeia de caracteres na caixa de listagem e a copia para o controle de edição.
int SelectString(
int nStartAfter,
LPCTSTR lpszString);
Parameters
nStartAfter
Contém o índice baseado em zero do item antes do primeiro item a ser pesquisado. Quando a pesquisa atinge a parte inferior da caixa de listagem, ela continua da parte superior da caixa de listagem de volta ao item especificado por nStartAfter. Se -1, toda a caixa de listagem é pesquisada desde o início.
lpszString
Aponta para a cadeia de caracteres terminada em nulo que contém o prefixo a ser pesquisado. A pesquisa é independente de maiúsculas e minúsculas, portanto, essa cadeia de caracteres pode conter qualquer combinação de letras maiúsculas e minúsculas.
Return Value
O índice baseado em zero do item selecionado se a cadeia de caracteres foi encontrada. Se a pesquisa não tiver sido bem-sucedida, o valor de retorno será CB_ERR e a seleção atual não será alterada.
Remarks
Uma cadeia de caracteres é selecionada somente se seus caracteres iniciais (do ponto inicial) corresponderem aos caracteres na cadeia de prefixo.
Observe que as SelectString funções e FindString member localizam uma string, mas a SelectString função member também seleciona a string.
Example
// The string to match.
LPCTSTR lpszSelect = _T("item");
// Select the item that begins with the specified string.
int nSel = m_pComboBox->SelectString(0, lpszSelect);
ASSERT(nSel != CB_ERR);
CComboBox::SetCueBanner
Define o texto de sinalização que é exibido para um controle de caixa de combinação.
BOOL SetCueBanner(LPCTSTR lpszText);
Parameters
lpszText
[em] Ponteiro para um buffer terminado em nulo que contém o texto de sinalização.
Return Value
TRUE se o método for bem-sucedido; caso contrário, FALSE.
Remarks
Cue text é um prompt que é exibido na área de entrada do controle de caixa de combinação. O texto de sinalização é exibido até que o usuário forneça entrada.
Esse método envia a CB_SETCUEBANNER mensagem, que é descrita no SDK do Windows.
Example
O primeiro exemplo de código define a variável, m_combobox, que é usada para acessar programaticamente o controle de caixa de combinação. Esta variável é usada no próximo exemplo.
// Variable to access the combo box control
CComboBox m_combobox;
O próximo exemplo de código define o banner cue para o controle de caixa de combinação.
// Add extra initialization here.
// Add 20 items to the combo box. The Resource Editor
// has already been used to set the style of the combo
// box to CBS_SORT.
CString str;
for (int i = 1; i <= 20; i++)
{
str.Format(_T("Item %2d"), i);
m_combobox.AddString(str);
}
// Set the minimum visible item
m_combobox.SetMinVisibleItems(10);
// Set the cue banner
m_combobox.SetCueBanner(_T("Select an item..."));
// End of extra initialization.
CComboBox::SetCurSel
Seleciona uma cadeia de caracteres na caixa de listagem de uma caixa de combinação.
int SetCurSel(int nSelect);
Parameters
nSelect
Especifica o índice baseado em zero da cadeia de caracteres a ser selecionada. Se -1, qualquer seleção atual na caixa de listagem será removida e o controle de edição será desmarcado.
Return Value
O índice baseado em zero do item selecionado se a mensagem for bem-sucedida. O valor de retorno é CB_ERR se nSelect for maior que o número de itens na lista ou se nSelect estiver definido como -1, o que limpa a seleção.
Remarks
Se necessário, a caixa de listagem rola a cadeia de caracteres para a exibição (se a caixa de listagem estiver visível). O texto no controle de edição da caixa de combinação é alterado para refletir a nova seleção. Qualquer seleção anterior na caixa de listagem é removida.
Example
// Select the last item in the combo box.
int nLast = pmyComboBox->GetCount() - 1;
if (nLast >= 0)
m_pComboBox->SetCurSel(nLast);
CComboBox::SetDroppedWidth
Chame essa função para definir a largura mínima permitida, em pixels, da caixa de listagem de uma caixa de combinação.
int SetDroppedWidth(UINT nWidth);
Parameters
nWidth
A largura mínima permitida da parte da caixa de listagem da caixa de combinação, em pixels.
Return Value
Se for bem-sucedida, a nova largura da caixa de listagem, caso contrário CB_ERR.
Remarks
Esta função só se aplica a caixas de combinação com o CBS_DROPDOWN estilo ou CBS_DROPDOWNLIST .
Por padrão, a largura mínima permitida da caixa de listagem suspensa é 0. Quando a parte da caixa de listagem da caixa de combinação é exibida, sua largura é a maior da largura mínima permitida ou da largura da caixa de combinação.
Example
// Find the longest string in the combo box.
CString str;
CSize sz;
int dx = 0;
TEXTMETRIC tm;
CDC *pDC = m_pComboBox->GetDC();
CFont *pFont = m_pComboBox->GetFont();
// Select the listbox font, save the old font
CFont *pOldFont = pDC->SelectObject(pFont);
// Get the text metrics for avg char width
pDC->GetTextMetrics(&tm);
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
m_pComboBox->GetLBText(i, str);
sz = pDC->GetTextExtent(str);
// Add the avg width to prevent clipping
sz.cx += tm.tmAveCharWidth;
if (sz.cx > dx)
dx = sz.cx;
}
// Select the old font back into the DC
pDC->SelectObject(pOldFont);
m_pComboBox->ReleaseDC(pDC);
// Adjust the width for the vertical scroll bar and the left and right border.
dx += ::GetSystemMetrics(SM_CXVSCROLL) + 2 * ::GetSystemMetrics(SM_CXEDGE);
// Set the width of the list box so that every item is completely visible.
m_pComboBox->SetDroppedWidth(dx);
CComboBox::SetEditSel
Seleciona caracteres no controle de edição de uma caixa de combinação.
BOOL SetEditSel(
int nStartChar,
int nEndChar);
Parameters
nStartChar
Especifica a posição inicial. Se a posição inicial estiver definida como -1, qualquer seleção existente será removida.
nEndChar
Especifica a posição final. Se a posição final estiver definida como -1, todo o texto da posição inicial até o último caractere no controle de edição será selecionado.
Return Value
Diferente de zero se a função de membro for bem-sucedida; caso contrário, 0. É CB_ERR se CComboBox tem o CBS_DROPDOWNLIST estilo ou não tem uma caixa de listagem.
Remarks
As posições são de base zero. Para selecionar o primeiro caractere do controle de edição, especifique uma posição inicial de 0. A posição final é para o caractere logo após o último caractere a ser selecionado. Por exemplo, para selecionar os quatro primeiros caracteres do controle de edição, você usaria uma posição inicial de 0 e uma posição final de 4.
Note
Esta função não é suportada pelo controlo Windows ComboBoxEx . Para obter mais informações sobre esse controle, consulte ComboBoxEx Controles no SDK do Windows.
Example
Veja o exemplo para CComboBox::GetEditSel.
CComboBox::SetExtendedUI
Chame a SetExtendedUI função de membro para selecionar a interface do usuário padrão ou a interface do usuário estendida para uma caixa de combinação que tenha o CBS_DROPDOWN estilo ou CBS_DROPDOWNLIST .
int SetExtendedUI(BOOL bExtended = TRUE);
Parameters
bExtended
Especifica se a caixa de combinação deve usar a interface do usuário estendida ou a interface do usuário padrão. Um valor de seleciona a interface de TRUE usuário estendida, um valor de seleciona a interface de FALSE usuário padrão.
Return Value
CB_OKAY se a operação for bem-sucedida ou CB_ERR se ocorrer um erro.
Remarks
A interface de usuário estendida pode ser identificada das seguintes maneiras:
Clicar no controle estático exibe a caixa de listagem somente para caixas de combinação com o
CBS_DROPDOWNLISTestilo.Pressionar a tecla SETA PARA BAIXO exibe a caixa de listagem (F4 está desativado).
A rolagem no controle estático é desabilitada quando a lista de itens não está visível (as teclas de seta estão desabilitadas).
Example
Veja o exemplo para CComboBox::GetExtendedUI.
CComboBox::SetHorizontalExtent
Define a largura, em pixels, pela qual a parte da caixa de listagem da caixa de combinação pode ser rolada horizontalmente.
void SetHorizontalExtent(UINT nExtent);
Parameters
nExtent
Especifica o número de pixels pelos quais a parte da caixa de listagem da caixa de combinação pode ser rolada horizontalmente.
Remarks
Se a largura da caixa de listagem for menor que esse valor, a barra de rolagem horizontal rolará horizontalmente os itens na caixa de listagem. Se a largura da caixa de listagem for igual ou maior que esse valor, a barra de rolagem horizontal ficará oculta ou, se a caixa de combinação tiver o CBS_DISABLENOSCROLL estilo, desabilitada.
Example
// Find the longest string in the combo box.
CString str;
CSize sz;
int dx = 0;
TEXTMETRIC tm;
CDC *pDC = m_pComboBox->GetDC();
CFont *pFont = m_pComboBox->GetFont();
// Select the listbox font, save the old font
CFont *pOldFont = pDC->SelectObject(pFont);
// Get the text metrics for avg char width
pDC->GetTextMetrics(&tm);
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
m_pComboBox->GetLBText(i, str);
sz = pDC->GetTextExtent(str);
// Add the avg width to prevent clipping
sz.cx += tm.tmAveCharWidth;
if (sz.cx > dx)
dx = sz.cx;
}
// Select the old font back into the DC
pDC->SelectObject(pOldFont);
m_pComboBox->ReleaseDC(pDC);
// Set the horizontal extent so every character of all strings can
// be scrolled to.
m_pComboBox->SetHorizontalExtent(dx);
CComboBox::SetItemData
Define o valor de 32 bits associado ao item especificado em uma caixa de combinação.
int SetItemData(
int nIndex,
DWORD_PTR dwItemData);
Parameters
nIndex
Contém um índice baseado em zero para o item a ser definido.
dwItemData
Contém o novo valor a ser associado ao item.
Return Value
CB_ERR se ocorrer um erro.
Remarks
Use a SetItemDataPtr função de membro se o item de 32 bits for um ponteiro.
Example
// Set the data of each item to be equal to its index.
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
m_pComboBox->SetItemData(i, i);
}
CComboBox::SetItemDataPtr
Define o valor de 32 bits associado ao item especificado em uma caixa de combinação como sendo o ponteiro especificado (void*).
int SetItemDataPtr(
int nIndex,
void* pData);
Parameters
nIndex
Contém um índice baseado em zero para o item.
pData
Contém o ponteiro a ser associado ao item.
Return Value
CB_ERR se ocorrer um erro.
Remarks
Esse ponteiro permanece válido durante toda a vida útil da caixa de combinação, mesmo que a posição relativa do item dentro da caixa de combinação possa mudar à medida que os itens são adicionados ou removidos. Assim, o índice do item dentro da caixa pode mudar, mas o ponteiro permanece confiável.
Example
// Set the data pointer of each item to be NULL.
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
m_pComboBox->SetItemDataPtr(i, NULL);
}
CComboBox::SetItemHeight
Chame a SetItemHeight função de membro para definir a altura dos itens de lista em uma caixa de combinação ou a altura da parte de controle de edição (ou texto estático) de uma caixa de combinação.
int SetItemHeight(
int nIndex,
UINT cyItemHeight);
Parameters
nIndex
Especifica se a altura dos itens de lista ou a altura da parte de controle de edição (ou texto estático) da caixa de combinação está definida.
Se a caixa de combinação tiver o CBS_OWNERDRAWVARIABLE estilo, nIndex especifica o índice baseado em zero do item de lista cuja altura deve ser definida, caso contrário, nIndex deve ser 0 e a altura de todos os itens da lista será definida.
Se nIndex for -1, a altura da parte de controle de edição ou texto estático da caixa de combinação deve ser definida.
cyItemHeight
Especifica a altura, em pixels, do componente de caixa de combinação identificado por nIndex.
Return Value
CB_ERR se o índice ou altura for inválido; caso contrário, 0.
Remarks
A altura da parte de controle de edição (ou texto estático) da caixa de combinação é definida independentemente da altura dos itens da lista. Um aplicativo deve garantir que a altura da parte de controle de edição (ou texto estático) não seja menor do que a altura de um item de caixa de listagem específico.
Example
// Set the height of every item to be the
// vertical size of the item's text extent.
CString str;
CSize sz;
CDC *pDC = m_pComboBox->GetDC();
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
m_pComboBox->GetLBText(i, str);
sz = pDC->GetTextExtent(str);
m_pComboBox->SetItemHeight(i, sz.cy);
}
m_pComboBox->ReleaseDC(pDC);
CComboBox::SetLocale
Define o identificador de localidade para esta caixa de combinação.
LCID SetLocale(LCID nNewLocale);
Parameters
nNewLocale
O novo valor de identificador de localidade (LCID) a ser definido para a caixa de combinação.
Return Value
O valor anterior do identificador de localidade (LCID) para esta caixa de combinação.
Remarks
Se SetLocale não for chamado, a localidade padrão será obtida do sistema. Essa localidade padrão do sistema pode ser modificada usando o aplicativo Regional (ou Internacional) do Painel de Controle.
Example
// My LCID to use.
LCID mylcid = MAKELCID(MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_MEXICAN),
SORT_DEFAULT);
// Force the list box to use my locale.
m_pComboBox->SetLocale(mylcid);
ASSERT(m_pComboBox->GetLocale() == mylcid);
CComboBox::SetMinVisibleItems
Define o número mínimo de itens visíveis na lista suspensa do controle de caixa de combinação atual.
BOOL SetMinVisibleItems(int iMinVisible);
Parameters
iMinVisible
[em] Especifica o número mínimo de itens visíveis.
Return Value
TRUE se este método for bem-sucedido; caso contrário, FALSE.
Remarks
Esse método envia a CB_SETMINVISIBLE mensagem, que é descrita no SDK do Windows.
Example
O primeiro exemplo de código define a variável, m_combobox, que é usada para acessar programaticamente o controle de caixa de combinação. Esta variável é usada no próximo exemplo.
// Variable to access the combo box control
CComboBox m_combobox;
O próximo exemplo de código insere 20 itens na lista suspensa de um controle de caixa de combinação. Em seguida, especifica que um mínimo de 10 itens sejam exibidos quando um usuário pressiona a seta suspensa.
// Add extra initialization here.
// Add 20 items to the combo box. The Resource Editor
// has already been used to set the style of the combo
// box to CBS_SORT.
CString str;
for (int i = 1; i <= 20; i++)
{
str.Format(_T("Item %2d"), i);
m_combobox.AddString(str);
}
// Set the minimum visible item
m_combobox.SetMinVisibleItems(10);
// Set the cue banner
m_combobox.SetCueBanner(_T("Select an item..."));
// End of extra initialization.
CComboBox::SetTopIndex
Garante que um item específico esteja visível na parte da caixa de listagem da caixa de combinação.
int SetTopIndex(int nIndex);
Parameters
nIndex
Especifica o índice baseado em zero do item da caixa de listagem.
Return Value
Zero se for bem-sucedido ou CB_ERR se ocorrer um erro.
Remarks
O sistema rola a caixa de listagem até que o item especificado por nIndex apareça na parte superior da caixa de listagem ou o intervalo máximo de rolagem tenha sido atingido.
Example
// Set the first visible item in the combo box to be the middle item
m_pComboBox->SetTopIndex(m_pComboBox->GetCount() / 2);
CComboBox::ShowDropDown
Mostra ou oculta a caixa de listagem de uma caixa de combinação que tem o CBS_DROPDOWN estilo ou CBS_DROPDOWNLIST .
void ShowDropDown(BOOL bShowIt = TRUE);
Parameters
bShowIt
Especifica se a caixa de listagem suspensa deve ser mostrada ou oculta. Um valor de mostra a caixa de TRUE listagem. Um valor de oculta a caixa de FALSE listagem.
Remarks
Por padrão, uma caixa de combinação desse estilo mostrará a caixa de listagem.
Esta função de membro não tem efeito em uma caixa de combinação criada com o CBS_SIMPLE estilo.
Example
Veja o exemplo para CComboBox::GetDroppedState.
See also
Exemplo de MFC CTRLBARS
CWnd Classe
Hierarchy Chart
CWnd Classe
CButton Classe
CEdit Classe
CListBox Classe
CScrollBar Classe
CStatic Classe
CDialog Classe