错误: 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 公司的贡献。

属性

文章编号: 201116 - 最后修改: 2013年10月11日 - 修订: 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
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 201116
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

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