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;

}

相关推荐
郝学胜_神的一滴12 小时前
CMake 30:循环语法全解|foreach_while双循环精讲、迭代技巧与实战避坑指南
c++·cmake
卷无止境3 天前
C++ 的Eigen 库全解析
c++
卷无止境3 天前
现代 C++特性大盘点:一门脱胎换骨的老语言
c++·后端
郝学胜_神的一滴3 天前
CMake 27:缓存变量的特性、语法、类型与实操全解
c++·cmake
博客18004 天前
酷宝的使用方法,超好用的免费界面库,C++、MFC可用
c++·mfc·界面库·库来帮·酷宝
郝学胜_神的一滴5 天前
CMake 026:属性体系精讲、四大作用域全解 & 实战代码落地
c++·cmake
众少成多积小致巨5 天前
JNI (Java Native Interface) 技术手册中文参考指南
android·java·c++
clint4569 天前
C++进阶(1)——前景提要
c++
夜悊10 天前
C++代码示例:进制数简单生成工具
c++
郝学胜_神的一滴10 天前
CMake 021: IF 条件判据详诠
c++·cmake