0

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

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

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


至今:

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

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
}


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

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

4

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

于 2012-10-02T19:37:22.417 回答