我正在尝试使用Canon EDSDK 2.10中的EdsSetProgressCallback
功能来通知用户图像保存完成情况。我已将inProgressOption
参数设置为kEdsProgressOption_Done
。问题是,成功保存后不执行任何操作。你能告诉我我是否正确实现了这个功能吗?
我的回调函数:
EdsError EDSCALLBACK CManEosDlg::ProgressFunc (EdsUInt32 inPercent, EdsVoid* inContext, EdsBool* outCancel) {
CManEosDlg *pobj = (CManEosDlg *)inContext;
CStatic *pProgress=(CStatic*)pobj->GetDlgItem(IDC_LABEL);
pProgress->SetWindowText("Image saved");
return EDS_ERR_OK;
}
片段图像保存功能:
EdsStreamRef DstStreamRef;
EdsError err = EdsCreateFileStream( path , kEdsFileCreateDisposition_CreateAlways , kEdsAccess_Write , &DstStreamRef );
if( err == EDS_ERR_OK ) {
err = EdsSetProgressCallback(DstStreamRef, ProgressFunc, kEdsProgressOption_Done, this);
if(err == EDS_ERR_OK) {
err = EdsSaveImage(_imageModel->getImageObject(), inImageType , inSaveSetting , DstStreamRef );
}
}
EdsRelease(DstStreamRef);
Latter从EdsSetProgressCallback
返回EDS_ERR_OK,但在保存图像后永远不会调用ProgressFunc
。我把消息箱放在那里检查了它;)
答案 0 :(得分:1)
您的代码似乎很棒!
而不是EdsSaveImage
尝试EdsDownload
。
我认为EdsSaveImage不会发送回调函数的调用。
BTW我想知道你在你的命名空间中使用了“Callbacker”:
EdsError EDSCALLBACK CManEosDlg::ProgressFunc
在我的项目中,我必须在我的“CManEosDlg”类的顶部定义没有名称空间的内容,如
EdsError EDSCALLBACK ProgressFunc