自定义CMFCToolBar时出现问题

自定义CMFCToolBar时出现问题

本文介绍了自定义CMFCToolBar时出现问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,



我已经按照我在网上找到的关于如何通过调用 CMFCToolBar来自定义工具栏的所有说明进行操作:: ReplaceButton(),并让它显示 CMFCToolBarComboBoxButton



I已经子类 CMFCToolBarComboBoxButton 以覆盖 CreateCombo(),但如果我调用 CMFCToolBar :: ReplaceButton()使用此派生类,我的派生 CreateCombo()永远不会被调用。



任何想法我做错了什么?



TIA。



PS - 这个项目从VS2005转换为VS2010,如果这有任何区别。

Hi all,

I've followed all the instructions I can find online on how to customise a toolbar by calling CMFCToolBar::ReplaceButton(), and have got it to display a CMFCToolBarComboBoxButton.

I have subclassed CMFCToolBarComboBoxButton in order to override CreateCombo(), but if I call CMFCToolBar::ReplaceButton() with this derived class, my derived CreateCombo() is never being called.

Any ideas what I am doing wrong?

TIA.

PS - This project was converted from VS2005 to VS2010, if that makes any difference.

推荐答案


LRESULT CMainFrame::OnToolbarReset(WPARAM wp,LPARAM)
{
 UINT uiToolBarId = (UINT) wp;
 TRACE( "CMainFrame::OnToolbarReset : %i\n", uiToolBarId );

 switch (uiToolBarId)
 {
  case YOUR_TOOLBAR_ID:
    CMFCToolBarComboBoxButton deviceCombo(IDC_DEVICE_TOOLBAR_COMBO, GetCmdMgr()->GetCmdImage(IDC_DEVICE_TOOLBAR_COMBO, FALSE), CBS_DROPDOWNLIST);
    m_DeviceToolBar.ReplaceButton ( IDC_DEVICE_TOOLBAR_COMBO, deviceCombo   );

  break;
 }
}





:框架将保存/加载注册表中工具栏按钮的状态,如果您对代码进行更改,应用程序仍将使用这些值。所以在(重新)编码工具栏时删除注册表中的应用程序条目。这是非常加重的。



祝你好运。



: the framework will save/load the state of the buttons of the toolbars in the registry, if you make changes to the code, the application will still use those values. so remove your application entry in the registry when (re)coding toolbars. This is quite aggravating.

Good luck.



这篇关于自定义CMFCToolBar时出现问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-04 20:48