liuyan5462010 2018-01-18 03:36 采纳率: 0%
浏览 899
已结题

如何取带作用域的函数地址

我写的一个C++的MFC程序,如下图:PageEndProc这个函数会作为一个回调函数传入funcAplIFEntryEventFunc这个函数,我再头文件里声明了一个事件PostScanEveryPage,需要在回调时触发这个事件。但是因为PageEndProc这个没加作用域限制符CPnScanOCXCtrl::导致调用PostScanEveryPage会提示为定义标识符;如果加上这个标识符,在传入funcAplIFEntryEventFunc会提示转换无效。不知道怎么做才是对的。
图片说明
// For Tool Kit
long _stdcall PageEndProc(SCAN_PAGEINFO* pPage)
{
//char str[260];
//memset(&str, 0x00, sizeof(str));
//long err = 0;
//if(funcAplIFGetOrgFileName){
// funcAplIFGetOrgFileName(str, &err);
//}

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条回答

  • threenewbee 2018-01-18 03:43
    关注

    你这个不是函数作用域,而是成员函数。
    成员函数的函数原型末尾有一个CPnScanOCXCtrl * this的隐含参数。加上去就匹配了。

    评论

报告相同问题?

悬赏问题

  • ¥15 Stata 面板数据模型选择
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用