• MFC工具栏按钮点击,响应消息


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 2401_83592121 2024-04-18 15:18 采纳率: 25% 浏览 2 首页/ 微软技术 / MFC工具栏按钮点击,响应消息 mfc 如图,我怎么判断点击了工具栏中的按钮,如何判断点击了不同的按钮? 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    3条回答 默认 最新

    • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-18 15:18
      关注

      引自免费微信小程序:皆我百晓生

      在MFC中,为了处理工具栏按钮的点击事件,你需要为每个按钮创建一个消息映射,并设置相应的响应函数。下面是一个详细的步骤来实现这个功能。

      1. 首先,在你的视图类(通常是CView派生类)的头文件中声明响应函数。例如,我们为三个按钮分别命名为ID_ADD、ID_EDIT和ID_DELETE,可以这样定义函数:
      afx_msg void OnAdd();
      afx_msg void OnEdit();
      afx_msg void OnDelete();
      
      1. 在视图类的源文件中实现这三个函数:
      void CYourView::OnAdd()
      {
          // 处理"添加"按钮被点击的逻辑
          AfxMessageBox(L"添加按钮被点击");
      }
      
      void CYourView::OnEdit()
      {
          // 处理"修改"按钮被点击的逻辑
          AfxMessageBox(L"修改按钮被点击");
      }
      
      void CYourView::OnDelete()
      {
          // 处理"删除"按钮被点击的逻辑
          AfxMessageBox(L"删除按钮被点击");
      }
      
      1. 接下来,我们需要在视图类的消息地图中添加对应的消息映射。打开你的视图类的源文件,找到BEGIN_MESSAGE_MAPEND_MESSAGE_MAP之间的部分,然后添加映射:
      BEGIN_MESSAGE_MAP(CYourView, CView)
          ON_COMMAND(ID_ADD, &CYourView::OnAdd)
          ON_COMMAND(ID_EDIT, &CYourView::OnEdit)
          ON_COMMAND(ID_DELETE, &CYourView::OnDelete)
      END_MESSAGE_MAP()
      
      1. 最后,确保你在工具栏资源文件中设置了正确的ID。通常情况下,当创建工具栏时,Visual Studio会自动为你分配ID。如果你使用的是RC文件,比如resource.h和resource.rc,确保这些ID已经被正确地定义并分配给对应的按钮。例如:

      在resource.h中定义ID:

      #define ID_ADD  ID_SEPARATOR + 1
      #define ID_EDIT ID_ADD + 1
      #define ID_DELETE ID_EDIT + 1
      

      在resource.rc中分配ID给按钮:

       IDR_MAINFRAME TOOLBAR "ToolBar"
       {
         BEGIN
           BUTTON        ID_ADD, 0, 0, 64, 64, TBSTATE_ENABLED
           BUTTON        ID_EDIT, 64, 0, 64, 64, TBSTATE_ENABLED
           BUTTON        ID_DELETE, 128, 0, 64, 64, TBSTATE_ENABLED
         END
       }
      

      现在,当你点击工具栏上的相应按钮时,对应的函数会被调用,执行相应的操作。这只是一个基本的例子,实际应用中你可能需要根据业务需求进行更复杂的数据处理或者界面交互。

      展开全部

      评论 编辑记录
    • Kwan的解忧杂货铺 Java领域优质创作者 2024-04-18 15:18
      关注

      下午好🌅🌅🌅
      本答案参考ChatGPT-3.5

      要判断点击了工具栏中的按钮,可以通过以下步骤来实现:

      1. 首先,在资源编辑器中为每个工具栏按钮设置一个唯一的标识符,可以使用整数或字符串来作为标识符。

      2. 在你的MFC框架窗口类中,添加一个成员变量来保存当前选中的工具栏按钮的标识符。可以使用一个整数变量来存储标识符。

      3. 在类wizard生成的MFC框架窗口类的消息映射中,添加一个响应工具栏按钮点击事件的函数。

      4. 在该函数中,使用Switch语句或if语句来判断点击了哪个工具栏按钮,然后根据需要执行相应的操作。

      下面是一个示例代码,演示如何根据不同的按钮点击执行不同的操作:

      // 声明类成员变量,用于保存选中的工具栏按钮标识符
      UINT m_nSelectedBtnID = 0;
      
      // 响应工具栏按钮点击事件的函数
      void CMainFrame::OnToolbarButtonClick(UINT nID)
      {
          // 保存当前选中的工具栏按钮标识符
          m_nSelectedBtnID = nID;
      
          // 根据不同的按钮标识符执行不同的操作
          switch (nID)
          {
          case ID_TOOLBAR_BUTTON1:
              // 点击了按钮1,执行相应的操作
              break;
          case ID_TOOLBAR_BUTTON2:
              // 点击了按钮2,执行相应的操作
              break;
          case ID_TOOLBAR_BUTTON3:
              // 点击了按钮3,执行相应的操作
              break;
          // 添加更多的工具栏按钮判断分支
          }
      }
      

      在上述示例代码中,假设ID_TOOLBAR_BUTTON1ID_TOOLBAR_BUTTON2ID_TOOLBAR_BUTTON3是工具栏按钮的标识符,你可以根据实际情况修改这部分代码。

      注意:要使工具栏按钮与响应函数关联,需要使用消息映射宏ON_COMMAND_RANGE来映射按钮的ID范围,具体使用方法可以参考MFC的消息映射机制文档。

      希望以上信息能够帮助到你!

      展开全部

      评论
      2401_83592121 2024-04-18 15:30

      这个按钮点击事件函数在哪里找的啊

      回复
    • GISer Liu 2024-04-18 16:23
      关注

      该回答引用自GPT-3.5,由博主GISer Liu编写:

      针对MFC工具栏按钮点击响应消息问题,我会提供详细的解决思路和解决方案,确保满足您的需求:

      1. 问题分析
      • 在MFC应用程序中,工具栏按钮是常见的用户界面元素,用户通过点击按钮执行不同的操作。
      • 需要判断用户点击了哪个工具栏按钮,以便执行相应的操作。
      1. 解决思路
      • 在MFC框架中,工具栏按钮的点击响应消息可以通过消息映射机制来处理。
      • 我们可以使用消息映射来捕获工具栏按钮的点击事件,并根据按钮的标识符来区分不同的按钮。
      1. 解决方案
      2. 添加消息映射 :首先,在消息映射表中添加工具栏按钮的点击消息映射。
        cppCopy code
        ON_COMMAND_RANGE(ID_BUTTON1, ID_BUTTONN, OnToolbarButtonClick)
        
        这里ID_BUTTON1ID_BUTTONN是工具栏按钮的标识符范围,OnToolbarButtonClick是消息处理函数。
      3. 消息处理函数 :在消息处理函数OnToolbarButtonClick中处理工具栏按钮的点击事件。
        cppCopy code
        void CMyDialog::OnToolbarButtonClick(UINT nID)
        {
        switch(nID)
        {
        case ID_BUTTON1:
        // 处理按钮1的点击事件
        break;
        case ID_BUTTON2:
        // 处理按钮2的点击事件
        break;
        // 添加更多按钮的处理逻辑
        }
        }
        
        在这里,根据按钮的标识符nID来区分不同按钮的点击事件,并执行相应的操作。
      4. 代码大纲
      • 添加消息映射到消息处理函数。
      • 在消息处理函数中根据按钮的标识符来区分不同按钮的点击事件,执行相应的操作。
      1. 代码示例 (C++):
        cppCopy code
        // 在消息映射表中添加消息映射
        ON_COMMAND_RANGE(ID_BUTTON1, ID_BUTTONN, OnToolbarButtonClick)
        // 消息处理函数
        void CMyDialog::OnToolbarButtonClick(UINT nID)
        {
        switch(nID)
        {
        case ID_BUTTON1:
        // 处理按钮1的点击事件
        break;
        case ID_BUTTON2:
        // 处理按钮2的点击事件
        break;
        // 添加更多按钮的处理逻辑
        }
        }
        
      2. 总结
      • 通过消息映射机制,可以方便地捕获工具栏按钮的点击事件,并根据按钮的标识符来区分不同按钮的点击。
      • 在消息处理函数中,可以执行相应的操作来响应按钮的点击事件,实现功能的具体逻辑。
        希望以上解决方案能够帮助您解决MFC工具栏按钮点击响应消息的问题。如果您对具体实现有任何疑问或需要进一步帮助,请随时提出。

      如果该回答解决了您的问题,请采纳!如果没有,请私信联系或评论您的疑惑

      展开全部

      评论
    编辑
    预览

    报告相同问题?

  • 相关阅读:
    珠三角IB学校IB成绩为何能逆增长?
    html+css实战193-内容-布局
    Linux命令之strace命令
    考研过程中遇到学习焦虑怎么办--缓解学习焦虑的神奇方法
    HDFS Java API
    索引和事务
    数据结构----线性表之双向链表
    CogVLM & CogAgent模型部署
    vue使用js生成图片验证码
    Git:Git中的分支管理
  • 原文地址:https://ask.csdn.net/questions/8090638