在MFC中使用事件创建工具栏

时间:2012-10-02 19:23:51

标签: c++ mfc toolbar

您好我的单文档MFC应用程序出了问题。

我想将自己的工具栏添加到MainFrm类(CFrameWnd)。

我是MFC的新手。所以我不确定是否可以添加它。


到目前为止:

创建了ID为IDR_TOOLBAR1的工具栏资源

ID为ID_SELECT_SHAPE

的工具栏按钮

在MainFrm.h中声明了CToolBar m_wndMyToolBar;

在MainFrm.cpp中:

if (!m_wndMyToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
            !m_wndMyToolBar.LoadToolBar(IDR_TOOLBAR1))
{
    TRACE0("Failed to create toolbar\n");
    return -1;      // fail to create
}


工具栏现在显示。好极了!
但我不知道如何添加事件处理程序。

有人可以判断我是否走在正确的轨道上?如果是这样,谁可以告诉如何添加该事件?

1 个答案:

答案 0 :(得分:1)

是的,你走在正确的轨道上。您的MainFrame.cpp应该有一个以

开头的部分
BEGIN_MESSAGE_MAP 

结束
END_MESSAGE_MAP

在该部分内,您需要一个条目

ON_COMMAND  (ID_SELECT_SHAPE, &CFrameWnd::OnSelectShape)

在.h文件中添加声明

afx_msg void OnSelectShape();

并在.cpp文件中实现OnSelectShape函数来处理您的事件。

根据处理程序需要执行的操作以及需要处理的数据,可能更容易添加处理程序并在CView ...类中实现它而不是CFrameWnd类。处理程序也可以在CDocument ...类中实现。单击工具栏按钮时,MFC Doc-View框架将首先在View中查找处理程序。如果没有可用的处理程序,它会在Document中查找一个,最后如果没有处理程序,它将在主框架窗口中查找一个。