当前位置: 首页 > news >正文

MFC 重写了listControl类(类名为A),并把双击事件的处理函数定义在A中,主窗口如何接收表格是否被双击

刚接触MFC遇到的问题,我在主对话框的.cpp里添加了表格的双击处理事件,但是没用,试了下添加单击的,发现居然可以进单击的处理函数,就很懵逼,然后我就把处理双击事件的函数添加到表格的类中,那这样就会又有个问题,我想在主程序这里去处理这个事件,那我应该怎么做?然后采用的是回调函数进行处理:

在A类 .hpp 中添加​​​​​​​

public:
    void setDoubleClick(function<void(NMHDR* pNMHDR, LRESULT* pResult)> doubleClickCallBack);
    afx_msg void OnDblclkList2(NMHDR* pNMHDR, LRESULT* pResult);
private:
    function<void(NMHDR* pNMHDR, LRESULT* pResult)> m_doubleClickCallBack;

在A类 .cpp 中添加

void ExListCtrl::setDoubleClick(function<void(NMHDR* pNMHDR, LRESULT* pResult)> doubleClickCallBack) {
    m_doubleClickCallBack = doubleClickCallBack;
}

void ExListCtrl::OnDblclkList2(NMHDR* pNMHDR, LRESULT* pResult)
{
    LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);

    if (m_doubleClickCallBack) {
        m_doubleClickCallBack(pNMHDR, pResult);//当表格被双击就调用
    }

    *pResult = 0;
}

在主对话框类 .cpp 的OnInitDialog()中添加绑定

        childList.setDoubleClick(std::bind(&CmoldingSinglePieceAutoImportSheetDlg::OnDoubleClick_List2, this, std::placeholders::_1, std::placeholders::_2));

定义主对话框的处理双击函数并在头文件中声明

void CmoldingSinglePieceAutoImportSheetDlg::OnDoubleClick_List2(NMHDR* pNMHDR, LRESULT* pResult)
{
    LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
    // TODO: 在此添加控件通知处理程序代码

    //已被双击

    *pResult = 0;
}

http://www.lryc.cn/news/482276.html

相关文章:

  • c和cpp的异常处理
  • monkey-安卓稳定性测试
  • 【贪心算法】贪心算法三
  • LeetCode 40-组合总数Ⅱ
  • STM32WB55RG开发(1)----开发板测试
  • 误删分区数据恢复全攻略
  • 《XGBoost算法的原理推导》12-14决策树复杂度的正则化项 公式解析
  • 昇思大模型平台打卡体验活动:项目4基于MindSpore实现Roberta模型Prompt Tuning
  • hadoop 3.x 伪分布式搭建
  • springboot 整合mybatis
  • 餐饮门店收银系统源码、php收银系统源码
  • canal1.1.7使用canal-adapter进行mysql同步数据
  • 揭秘文心一言,智能助手新体验
  • 良心无广,这5款才是你电脑上该装的神仙软件,很多人都不知道
  • Scala图书馆创建图书信息
  • 【Python】深入理解Python中的单例模式:用元类、装饰器和模块实现高效的单例设计
  • Flutter 小技巧之 Shader 实现酷炫的粒子动画
  • 【LeetCode】【算法】42. 接雨水
  • 深⼊理解指针(5)[回调函数、qsort相关知识(qsort可用于各种类型变量的排序)】
  • qt QRunnable 与 QThreadPool详解
  • 博客摘录「 java三年工作经验面试题整理《精华》」2023年6月12日
  • 福禄克FLUKE5500A与fluke5520a校准仪的区别功能
  • 量化交易系统开发-实时行情自动化交易-2.技术栈
  • 【逆向爬虫实战】--全方位分析+某某学堂登录(DES加密)
  • 第2关:装载问题 (最优队列法)
  • 萤石设备视频接入平台EasyCVR海康私有化视频平台监控硬盘和普通硬盘有何区别?
  • 【Webpack配置全解析】打造你的专属构建流程️(4)
  • 【SpringMVC】基础入门(1)
  • FFmpeg存放压缩后的音视频数据的结构体:AVPacket简介,结构体,函数
  • 用接地气的例子趣谈 WWDC 24 全新的 Swift Testing 入门(三)