2012-03-22 10 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 EdsSetProgressCallbackしかしProgressFuncからが呼び出されることはありません。メッセージボックスを置いてチェックしました;)

答えて

1

あなたのコードはすばらしいと思われます!

EdsSaveImageの代わりに、EdsDownloadを試してください。 私はEdsSaveImageがコールバック関数の呼び出しを送信しないと思います。

ところで私は、あなたが「Callbacker」は、名前空間内で作業してしまったこと、思っていた:私のプロジェクトで

EdsError EDSCALLBACK CManEosDlg::ProgressFunc 

として私は、私の「CManEosDlg」級のトップに名前空間なしでそれを定義する必要がありました

EdsError EDSCALLBACK ProgressFunc 
関連する問題