Erro: CB_SETTOPINDEX e CB_GETTOPINDEX sempre devolvem zero no Macintosh

Traduções de Artigos Traduções de Artigos
Artigo: 201116 - Ver produtos para os quais este artigo se aplica.
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Expandir tudo | Reduzir tudo

Sintomas

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

Causa

Existem não processadores de mensagens para estas mensagens no procedimento de janela de caixa de combinação na biblioteca de portabilidade do Windows.

Resolução

Obter um apontador para a parte da caixa de lista da caixa de combinação e utilize LB_GETTOPINDEX e LB_SETTOPINDEX como alternativa.

Ponto Da Situação

A Microsoft confirmou que este erro ocorre nos produtos da Microsoft listados no início deste artigo.

Mais Informação

O controlo de caixa de combinação é composto por um controlo de edição e um controlo de caixa de listagem. Para obter informações adicionais sobre as 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 relacionam
No lado Intel, o controlo de edição é o primeiro subordinado da caixa de combinação. Para uma caixa de combinação simples, o Macintosh tem o controlo de caixa de listagem como o primeiro controlo.

O identificador de janela à caixa de listagem pode ser obtido utilizando GetWindow. Após a obtenção de um identificador válido, utilizar as mensagens LB_GETTOPINDEX e LB_SETTOPINDEX fornece a mesma funcionalidade como 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 João, Microsoft Corporation.

Propriedades

Artigo: 201116 - Última revisão: 4 de fevereiro de 2014 - Revisão: 2.0
A informação contida neste artigo aplica-se a:
  • Microsoft Visual C++ 4.0 Cross Development Edition para Macintosh
  • Microsoft Visual C++ 4.0 Cross Development Edition para 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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