MFC项目怎么添加工具栏?

MFC项目怎么添加工具栏?

在创建MFC项目的时候,我选择的是经典菜单,后续添加工具栏该怎么办呢?

  1. 添加工具栏资源

    1. 在 Visual Studio 的资源视图中,右键单击任意资源文件夹,选择 “添加” -> “资源”,在弹出的对话框中选择 “Toolbar”,点击 “新建”,即可创建新的工具栏资源,也可在原有工具栏资源上修改。创建或选中后,可在右侧属性窗口中,为工具栏按钮的 “Prompt” 属性设置悬停提示信息,格式为 “\n + 内容” 。

  2. 创建工具栏对象

    1. 在框架类(如CMainFrame)中,声明一个CToolBar类型的成员变量,比如m_ToolBar

  3. 初始化工具栏

    1. 在框架类的OnCreate函数中(该函数在窗口创建时调用)初始化工具栏:

      int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
      {
          if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
              return -1;
          // 创建工具栏
          if (!m_ToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY) ||
              !m_ToolBar.LoadToolBar(IDR_MAIN_TOOLBAR)) // IDR_MAIN_TOOLBAR为工具栏资源ID,需根据实际设置
          {
              TRACE0("Failed to create toolbar\n");
              return -1;      // 未能创建工具栏
          }
          // 设置工具栏停靠
          EnableDocking(CBRS_ALIGN_ANY);
          m_ToolBar.EnableDocking(CBRS_ALIGN_ANY);
          DockControlBar(&m_ToolBar);
          return 0;
      }//上述代码先调用CreateEx方法创建工具栏,设置其风格等属性,再通过LoadToolBar加载之前创建的工具栏资源。然后通过EnableDocking和DockControlBar等函数设置工具栏可停靠并进行停靠操作 。
      
  4. 添加按钮消息响应

    1. 如果对应ID已经有处理函数了,就不用操作了
    2. 手动添加:在框架类或相关类中,手动添加WM_COMMAND消息处理函数,在函数内通过switch语句,针对不同工具栏按钮的命令 ID 编写相应处理逻辑 。
    3. 使用类向导:打开类向导,在 “消息映射” 选项卡中,选择对应的类,在 “对象 ID” 列表中找到工具栏按钮的 ID,在 “消息” 列表中选择COMMAND消息,点击 “添加处理程序”,即可自动生成消息处理函数框架,在函数内编写功能实现代码 。
MFC(Microsoft Foundation Classes)框架中,要向窗口添加工具栏按钮,你可以按照以下步骤操作: 1. **创建资源文件**: - 打开资源编辑器(Resource Editor),通常在Visual Studio中可通过`View > Resource Editor`访问。 - 在资源视图中选择`Toolbar`类别,然后右键点击并选择“Insert”>“Button”,为每个你想要的工具栏按钮创建条目。 2. **设计界面**: - 在资源编辑器中,可以设置按钮的文字、图标以及其在工具栏中的位置。 - 给每个按钮分配一个ID,这将用于程序代码中引用它。 3. **编写代码**: a. 在头文件中包含所需的MFC库,并声明工具栏变量: ```cpp #include "afxtoolbar.h" DECLARE_DYNAMIC(MyFrameWnd); // 如果是在CMyFrameWnd类中添加工具栏 ``` b. 在窗体类(如CMyFrameWnd)的`.H`文件中,添加工具栏的成员变量和创建函数: ```cpp afxToolBarCtrl m_wndToolBar; void OnCreateToolBar(); ``` c. 实现`OnCreateToolBar()`函数,在这里初始化工具栏并将资源文件中的按钮添加上去: ```cpp void CMyFrameWnd::OnCreateToolBar() { if (!m_wndToolBar.Create(this)) AfxThrowResourceException(); // 添加从资源文件获取的工具栏按钮 for (int i = 0; i < IDR_TOOLBAR; ++i) // IDR_TOOLBAR是资源ID { m_wndToolBar.AddSimple(afx IDC_MYBUTTON_ID[i], AtlLoadIcon(IDRicone), TBBS_BUTTON); } // 遵循MFC规范,最后调用基类方法完成工具栏的显示 CDialogBar::DockControl(pDX, AFX_IDW_DOCKBAR_TOP); m_wndToolBar.LoadStandardButtons(); } ``` 4. **响应事件**: - 对于工具栏按钮,你需要在消息映射表中处理`BN_CLICKED`或类似的消息,以便当用户点击按钮时执行相应的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值