错误: CB_SETTOPINDEX 和 CB_GETTOPINDEX 始终返回零在 Macintosh 上

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 201116
本文已归档。它按“原样”提供,并且不再更新。
症状
在 Macintosh 上, 组合框的消息 CB_GETTOPINDEX 和 CB_SETTOPINDEX 失败,并且始终返回零 (0)。
原因
没有消息处理程序,Windows 可移植性库中的组合框窗口过程中这些消息。
解决方案
获取一个指向列表框部分的组合框,并改用 LB_GETTOPINDEX 和 LB_SETTOPINDEX。
状态
Microsoft 已经确认这是在本文开头列出的 Microsoft 产品中的错误。
更多信息
该组合框控件是编辑控件和一个列表框控件组成。有关组合框的其他信息,请参阅 Microsoft 知识库中下面的文章:
65881信息: Windows 组合框部件和它们的关联方式
英特尔侧编辑控件是组合框的第一个子级。 为一个的简单组合框 Macintosh 与第一个控件具有该列表框控件。

可以使用 GetWindow 获取窗口句柄到列表框。一旦获得的是有效的句柄使用 LB_GETTOPINDEX 和 LB_SETTOPINDEX 消息提供了与 CB_GETTOPINDEX 和 CB_SETTOPINDEX 相同的功能。

下面的代码示例显示了 MFC 实现:

示例代码

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,保留的所有权限。Adam Kim,Microsoft 公司的贡献。

Macintosh CB_GETTOPINDEX CB_SETTOPINDEX 组合框列表框

属性

文章 ID:201116 - 上次审阅时间:10/11/2013 20:42:45 - 修订版本: 2.0

Microsoft Visual C++ 4.0 Cross Development Edition for Macintosh, Microsoft Visual C++ 4.0 Cross Development Edition for Macintosh

  • kbnosurvey kbarchive kbmt kbbug KB201116 KbMtzh
反馈