我认为很容易的事情我无法上班。如何让 ComboBox 在 上显示CMFCToolBar
?这是我所做的不起作用的事情(这意味着它只显示带有圆圈的原始占位符按钮(灰色))。
1 - 我在资源编辑器的工具栏中添加了一个按钮,为其提供了 ID ID_EDIT_FIND_COMBO(我还在其中放置了一个圆圈,只是为了知道它正在使用中)。
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 派生类构造按钮控件。
湾。使用 CMFCToolBar::ReplaceButton 将虚拟按钮替换为新控件。您可以在堆栈上构造按钮对象,因为 ReplaceButton 复制按钮对象并维护副本。
蒂亚!!
这是一个不起作用的示例项目。只是工具栏上的按钮,而不是组合框。甚至从 MS 示例中获取代码示例。