liuyan5462010 2018-01-18 07:38 采纳率: 0%
浏览 1226
已结题

C++中取函数地址或者触发事件的问题

我写的一个C++的MFC程序,如下图:PageEndProc这个函数会作为一个回调函数传入funcAplIFEntryEventFunc这个函数,我在头文件里声明了一个事件PostScanEveryPage,需要在回调PageEndProc时触发这个事件。但是因为PageEndProc这个没加作用域限制符CPnScanOCXCtrl::导致调用PostScanEveryPage会提示未定义标识符;如果加上这个标识符,在传入funcAplIFEntryEventFunc会提示转换无效。不知道怎么做才是对的。

 // For Tool Kit
long _stdcall PageEndProc(CPnScanOCXCtrl* ,SCAN_PAGEINFO* pPage)
{
    gPageCnt++;
    PostScanEveryPage(gPageCnt);
    return 0;
}

LONG CPnScanOCXCtrl::Scan(LONG nXferCount, LONG bAsync)
{
    AFX_MANAGE_STATE(AfxGetStaticModuleState());

    // TODO: 在此添加调度处理程序代码

    long sts;
    long errNo;

    if (!funcAplIFEntryEventFunc) {
        return 0;
    }
    if (!funcAplIFScanExec) {
        return 0;
    }
    // set event function
    sts = funcAplIFEntryEventFunc((long)PageEndProc, NULL, &errNo);
    }

图片说明

  • 写回答

2条回答 默认 最新

  • tiankuan1 2018-01-18 07:52
    关注

    加CPnScanOCXCtrl::, PageEndProc会多出一个参数出来,所以转换无效。
    可以考虑改变funcAplIFEntryEventFunc的声明第一个参数类型,或者PostScanEveryPage是static也行,CPnScanOCXCtrl::PostScanEveryPage

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算