为啥我无法捕捉工具栏事件?

Posted

技术标签:

【中文标题】为啥我无法捕捉工具栏事件?【英文标题】:Why i can't catch the ToolBar events ?为什么我无法捕捉工具栏事件? 【发布时间】:2012-09-19 06:29:02 【问题描述】:

我有一个包含 4 个按钮的简单对话框。 我想更改这 4 个按钮并制作包含 4 个按钮的 ToolBar,并且其行为与这些按钮完全相同。

在h文件CMFCToolBar中;

在 OnInitDialog 方法中,我调用此代码:

if(m_ToolBar.Create(this, AFX_DEFAULT_TOOLBAR_STYLE, 100 ) )

    m_ToolBar.SetPaneStyle(m_ToolBar.GetPaneStyle() & ~( CBRS_GRIPPER | CBRS_SIZE_DYNAMIC | CBRS_BORDER_ANY ) );

    m_ToolBar.InsertButton( CMFCToolBarButton( IDC_BTN_1, -1 , _T("Txt_1") ) );
    m_ToolBar.InsertButton( CMFCToolBarButton( IDC_BTN_2, -1 , _T("Txt_2") ) );
    m_ToolBar.InsertButton( CMFCToolBarButton( IDC_BTN_3, -1 , _T("Txt_3") ) );
    m_ToolBar.InsertButton( CMFCToolBarButton( IDC_BTN_4, -1 , _T("Txt_4") ) );

    CSize size = m_ToolBar.CalcFixedLayout( FALSE, TRUE );
    m_ToolBar.SetWindowPos( NULL, 0, 0, size.cx + 10, size.cy + 10 , SWP_NOACTIVATE | SWP_NOZORDER );


IDC_BTN_XX 与原始按钮的 ID 相同 => 所以在 BEGIN_MESSAGE_MAP 中我没有更改任何内容 => 所以我想获得与之前相同的 Click 事件

但是,在工具栏中单击没有发生任何事情 => 并且工具栏按钮在单击时显示为灰色。

怎么办? 我做错了什么?

【问题讨论】:

【参考方案1】:

您所遵循的过程对于 Visual Studio 2010 是正确的。

如果您在新的 MFC 项目中重试,基于对话框:

添加按钮 IDC_BUTTON1 管理点击代码 使用您在此处建议的相同代码添加工具栏

有效吗?

【讨论】:

以上是关于为啥我无法捕捉工具栏事件?的主要内容,如果未能解决你的问题,请参考以下文章

arcgis无法捕捉到点

arcgis开启捕捉工具还是没有办法使用,是怎么回事啊

为啥我无法捕捉到父母发送的孩子的信号?

qt 键盘事件Key_Left,Right,Up,Down事件捕捉不了,而A,S,D,W能捕捉,为啥啊

为啥我无法悬停并单击 Threejs 转换工具?

为啥没有调用第二个单点触控视图控制器工具栏按钮事件处理程序