0

簡単にできると思っていたことが仕事にならない。ComboBox を に表示するにはどうすればよいCMFCToolBarですか? これが私がやったことですが、うまくいきません(つまり、元のプレースホルダーボタンに円が付いているだけです(グレー表示されています))。

1 - リソース エディターのツールバーにボタンを追加し、ID_EDIT_FIND_COMBO という ID を付けました (使用中であることを知るために丸も入れました)。

2-メッセージマップと以下の関数CMainFrameに追加しました:ON_REGISTERED_MESSAGE(AFX_WM_RESETTOOLBAR, OnToolbarReset)OnToolbarReset()

afx_msg LRESULT CMainFrame::OnToolbarReset(WPARAM wparm, LPARAM )
{
   UINT uitoolbarid = (UINT) wparm;
   if (uitoolbarid == IDR_MAINFRAME) {
     CMFCToolBarComboBoxButton btncombo(ID_EDIT_FIND_COMBO, GetCmdMgr()->GetCmdImage(ID_EDIT_FIND));
     m_wndToolBar.ReplaceButton(ID_EDIT_FIND_COMBO, btncombo);
   }

   return 0;
}

それReplaceButton()がそれを置き換えたと言って1を返します。

私は何が欠けていますか?

明確にするために、MSが行うように言っているのは、上記で行われていることです。

1 - 親ツールバー リソース内のボタンのダミー リソース ID を予約します。Visual Studio でツールバー エディターを使用してボタンを作成する方法の詳細については、ツールバー エディターの記事を参照してください。

2 - 親ツールバーのすべてのビットマップ内のボタンのツールバー イメージ (ボタン アイコン) を予約します。

3 - AFX_WM_RESETTOOLBAR メッセージを処理するメッセージ ハンドラーで、次の手順を実行します。

を。CMFCToolbarButton の派生クラスを使用して、ボタン コントロールを構築します。

b. CMFCToolBar::ReplaceButton を使用して、ダミー ボタンを新しいコントロールに置き換えます。ReplaceButton はボタン オブジェクトをコピーし、そのコピーを維持するため、スタック上にボタン オブジェクトを作成できます。

ティア!!

動作しないサンプル プロジェクトを次に示します。コンボボックスではなく、ツールバーのボタンのみ。MSサンプルからコードサンプルを取得しました。

サンプルプロジェクト

4

1 に答える 1