BUG: CB_SETTOPINDEX and CB_GETTOPINDEX Always Return Zero on MacintoshID: Q201116
|
On the Macintosh, the combo box messages CB_GETTOPINDEX and CB_SETTOPINDEX fail and always return zero (0).
There are no message handlers for these messages in the combo-box window procedure in the Windows Portability Library.
Obtain a pointer to the list box portion of the combo box, and use LB_GETTOPINDEX and LB_SETTOPINDEX instead.
Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article.
The combo-box control is composed of an edit control and a list-box control. For additional information about combo boxes, please see the following article in the Microsoft Knowledge Base:
Q65881 INFO: The Parts of a Windows Combo Box and How They RelateOn the Intel side, the edit control is the first child of the combo box. For a simple combo box, the Macintosh has the list-box control as the first control.
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);
}
(c) Microsoft Corporation 1999, All Rights Reserved. Contributions by Adam Kim, Microsoft Corporation.
Additional query words: Macintosh CB_GETTOPINDEX CB_SETTOPINDEX combobox listbox
Keywords : kbcode kbMAC kbMFC kbVC kbVC400bug kbDSupport MacPrgIss
Version : MACINTOSH:4.0,4.0b
Platform : MACINTOSH
Issue type : kbbug
Last Reviewed: June 23, 1999