簡単にできると思っていたことが仕事にならない。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サンプルからコードサンプルを取得しました。