首页 文章

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

提问于
浏览
0

嗨,我的单文档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 回答

  • 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中查找一个,最后如果没有处理程序,它将在主Frame窗口中查找一个 .

相关问题