杭州 网站建设会计培训班一般多少钱
刚接触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;
 }
