0

我正在尝试使用EdsSetProgressCallbackCanon EDSDK 2.10 中的功能来通知用户图像保存完成。我已将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;
}

Fragment od图像保存功能:

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

后者返回 EDS_ERR_OK ,EdsSetProgressCallbackProgressFunc在保存图像后从不调用。我已经通过将消息框放在那里进行了检查;)

4

1 回答 1

1

你的代码看起来不错!

而不是EdsSaveImage尝试EdsDownload。我认为 EdsSaveImage 不会发送回调函数的调用。

顺便说一句,我想知道,您的命名空间中是否有“Callbacker”:

EdsError EDSCALLBACK CManEosDlg::ProgressFunc

在我的项目中,我必须在“CManEosDlg”类的顶部定义没有命名空间,如

EdsError EDSCALLBACK ProgressFunc
于 2012-11-03T08:35:48.900 回答