BOGUE : CB_SETTOPINDEX et CB_GETTOPINDEX toujours renvoyer zéro sur Macintosh

Traductions disponibles Traductions disponibles
Numéro d'article: 201116 - Voir les produits auxquels s'applique cet article
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Agrandir tout | Réduire tout

Symptômes

Sur Macintosh, les messages de zone de liste déroulante CB_GETTOPINDEX et CB_SETTOPINDEX échouent et renvoient toujours la valeur zéro (0).

Cause

Il n'y a aucun gestionnaires de messages pour ces messages dans la procédure de fenêtre de zone de liste modifiable dans la bibliothèque de la portabilité de Windows.

Résolution

Obtenir un pointeur vers la partie zone de liste de la zone de liste modifiable et utilisez LB_GETTOPINDEX et LB_SETTOPINDEX à la place.

Statut

Microsoft a confirmé l'existence de ce bogue dans les produits Microsoft répertoriés au début de cet article.

Plus d'informations

Le contrôle de zone de liste modifiable se compose d'un contrôle d'édition et un contrôle zone de liste. Pour plus d'informations sur les zones de liste déroulante, consultez l'article suivant dans la base de connaissances Microsoft :
65881Information : Parts d'une zone de liste déroulante Windows et comment les associer
Dans la partie Intel, le contrôle d'édition est le premier enfant de la zone de liste modifiable. Pour une zone de liste déroulante simple, le Macintosh possède le contrôle de zone de liste comme premier contrôle.

Le handle de fenêtre à la zone de liste peut être obtenu à l'aide de GetWindow. Une fois un handle valide est obtenu, à l'aide de messages LB_GETTOPINDEX et LB_SETTOPINDEX fournit les mêmes fonctionnalités que CB_GETTOPINDEX et CB_SETTOPINDEX.

L'exemple de code suivant illustre l'implémentation MFC :

Exemple de code


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);
}
				

Références

(c) 1999 Microsoft Corporation, tous droits réservés. Contribution ADAM Kim, Microsoft Corporation.

Propriétés

Numéro d'article: 201116 - Dernière mise à jour: vendredi 14 février 2014 - Version: 2.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual C++ 4.0 Cross Development Edition for Macintosh
  • Microsoft Visual C++ 4.0 Cross Development Edition for Macintosh
Mots-clés : 
kbnosurvey kbarchive kbmt kbbug KB201116 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 201116
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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