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

フラグメント 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 はコールバック関数の呼び出しを送信しないと思います。

ところで、名前空間内で「コールバッカー」が機能していることを疑問に思っていました。

EdsError EDSCALLBACK CManEosDlg::ProgressFunc

私のプロジェクトでは、「CManEosDlg」クラスの先頭に名前空間なしで定義する必要がありました。

EdsError EDSCALLBACK ProgressFunc
于 2012-11-03T08:35:48.900 に答える