2012-03-22 30 views
0

我試圖使用Canon EDSDK 2.10中的EdsSetProgressCallback函數來通知用戶圖像保存完成。我已將inProgressOption參數設置爲kEdsProgressOption_Done。問題是,成功保存後,沒有執行任何操作。你能告訴我我是否正確實施了這個功能嗎?如何正確實現EDSDK的EdsSetProgressCallback功能?

我的回調函數:

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

片段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永遠不會被調用。我已經通過將消息框放在那裏來檢查它);

回答

1

你的代碼似乎很好!

而不是EdsSaveImage嘗試EdsDownload。 我認爲EdsSaveImage不會發送回調函數的調用。

BTW我想知道,你拿到「Callbacker」命名空間內工作:

EdsError EDSCALLBACK CManEosDlg::ProgressFunc 

在我的項目,我不得不定義,沒有命名空間在我的「CManEosDlg」級的頂部,如

EdsError EDSCALLBACK ProgressFunc