バグ: CB_SETTOPINDEX および CB_GETTOPINDEX 常にリターン Macintosh でゼロ

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

201116
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
現象
Macintosh では、コンボ ボックス メッセージ CB_GETTOPINDEX と CB_SETTOPINDEX 失敗し、常にゼロ (0) を返します。
原因
Windows 性ライブラリで、コンボ ボックスのウィンドウ プロシージャ内のこれらのメッセージのメッセージ ハンドラーがありません。
解決方法
コンボ ボックスのリスト ボックス部分へのポインターを取得し、LB_GETTOPINDEX および LB_SETTOPINDEX を代わりに使用します。
状況
マイクロソフトではこれが、この資料の冒頭に記載されているマイクロソフト製品のバグとして認識しています。
詳細
コンボ ボックス コントロールはエディット コントロールと、リスト ボックス コントロールで構成されます。 コンボ ボックスについては、ください「以下「サポート技術情報」(Microsoft Knowledge Base)。
65881情報: Windows コンボ ボックスの部分と関連付けますした方法と
Intel 側では、エディット コントロールは、コンボ ボックスの最初の子です。 単純なコンボ ボックス、Macintosh 版は、リスト ボックス コントロールの最初のコントロールとしています。

リスト ボックスに、ウィンドウ ハンドルは、GetWindow を使用して取得できます。 有効なハンドルが取得すると後に、、CB_GETTOPINDEX および CB_SETTOPINDEX として同じ機能を提供、LB_GETTOPINDEX と LB_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) マイクロソフト 1999、予約済みのすべての権限。 Adam Kim、マイクロソフト株式会社を投稿します。

Macintosh CB_GETTOPINDEX CB_SETTOPINDEX コンボ ボックスのリスト ボックス

Warning: This article has been translated automatically

プロパティ

文書番号:201116 - 最終更新日: 02/11/2014 21:50:13 - リビジョン: 2.0

  • Microsoft Visual C++ 4.0 Cross Development Edition for Macintosh
  • Microsoft Visual C++ 4.0 Cross Development Edition for Macintosh
  • kbnosurvey kbarchive kbbug kbmt KB201116 KbMtja
フィードバック