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);
    }

图片说明

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

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

图片说明
加static又蹦出新问题了。好难