【问题标题】:Create toolbar with event in MFC在 MFC 中创建带有事件的工具栏
【发布时间】:2012-10-03 03:47:35
【问题描述】:

您好,我的单文档 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
}


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

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

【问题讨论】:

    标签: c++ mfc toolbar


    【解决方案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 框架将首先在视图中查找处理程序。如果没有可用的处理程序,它会在 Document 中查找一个,最后如果没有处理程序,它将在主 Frame 窗口中查找一个。

    【讨论】:

    • 谢谢!我现在看到已经有这样一个部分,所以我添加了该条目。但现在我得到了错误:'ID_SELECT_SHAPE' : undeclared identifier。我确信它在我的资源中
    • 哦等等..现在它正在做一些事情。完全重建成功了。而且您的解决方案完美无缺。 +1!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-08
    • 2014-03-04
    • 1970-01-01
    相关资源
    最近更新 更多