Erro: CB_SETTOPINDEX e CB_GETTOPINDEX sempre retornam zero em Macintosh

Traduções deste artigo Traduções deste artigo
ID do artigo: 201116 - Exibir os produtos aos quais esse artigo se aplica.
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Expandir tudo | Recolher tudo

Sintomas

No Macintosh, as mensagens de caixa de combinação CB_GETTOPINDEX e CB_SETTOPINDEX falharem e sempre retornará zero (0).

Causa

Não há nenhum manipulador de mensagem para essas mensagens no procedimento de janela caixa de combinação na biblioteca de portabilidade do Windows.

Resolução

Obtenha um ponteiro para a parte caixa de listagem da caixa de combinação e em vez disso use LB_GETTOPINDEX e LB_SETTOPINDEX.

Situação

A Microsoft confirmou que esse é um problema nos produtos da Microsoft listados no começo deste artigo.

Mais Informações

O controle da caixa de combinação é composto de um controle de edição e um controle de caixa de listagem. Para obter informações adicionais sobre caixas de combinação, consulte o seguinte artigo na Base de dados de Conhecimento da Microsoft:
65881INFO: As partes de uma caixa de combinação do Windows e como eles se relacionam com
No lado Intel, o controle de edição é o primeiro filho da caixa de combinação. Para uma caixa de combinação simples, o Macintosh tem o controle de caixa de listagem como o primeiro controle.

O identificador de janela para a caixa de listagem pode ser obtido usando GetWindow. Depois que um identificador válido é obtido, usando as mensagens LB_GETTOPINDEX e LB_SETTOPINDEX fornece a mesma funcionalidade que CB_GETTOPINDEX e CB_SETTOPINDEX.

O código de exemplo abaixo mostra a implementação de MFC:

Código de exemplo


class CCtrlsView : public CFormView
{
public:
   CComboBox   m_comboindex;
   int      m_currentIndex;
#ifdef _MAC
   CListBox m_comboList;
#endif
...
};

void CCtrlsView::OnInitialUpdate()
{
   CFormView::OnInitialUpdate();

#ifdef _MAC
   // Obtain pointer to combo's list box.
   HWND hComboList = m_comboindex.GetWindow(GW_CHILD)->m_hWnd;
   ASSERT(hComboList);

   // Verify class name.
   char className[50];
   GetClassName(hComboList, className, 50);
   ASSERT(lstrcmp(className, "ComboLBox") == 0);

   // Subclass to use CListBox.
   m_comboList.SubclassWindow(hComboList);
#endif
...
}

// A simple combo box with "set" and "get" buttons using
// the values from an edit control.
void CCtrlsView::OnSetindex()
{
   UpdateData(TRUE);
#ifndef _MAC
   m_comboindex.SetTopIndex(m_currentIndex);
#else
   m_comboList.SetTopIndex(m_currentIndex);
#endif
}

void CCtrlsView::OnGetindex()
{
#ifndef _MAC
   m_currentIndex = m_comboindex.GetTopIndex();
#else
   m_currentIndex = m_comboList.GetTopIndex();
#endif
   UpdateData(FALSE);
}
				

Referências

(c) 1999 Microsoft Corporation, todos os direitos reservados. Contribuições de ADAM Kim, Microsoft Corporation.

Propriedades

ID do artigo: 201116 - Última revisão: sexta-feira, 11 de outubro de 2013 - Revisão: 2.0
A informação contida neste artigo aplica-se a:
  • Microsoft Visual C++ 4.0 Cross Development Edition for Macintosh
  • Microsoft Visual C++ 4.0 Cross Development Edition for Macintosh
Palavras-chave: 
kbnosurvey kbarchive kbmt kbbug KB201116 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 201116

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com