スレッド: [cppll_novice:0655] SHFileOperationについて!!

スレッド

[cppll_novice:0655] SHFileOperationについて!!

[ | ▲ / ▼ | ]
Subject:
[cppll_novice:0655] SHFileOperationについて!!
From:
だい <oohashi_dai@...>
Date:
Thu, 2 Dec 2004 20:54:25 +0900 (JST)
X-Mailer:
FreeML Web Mailer XP; SP2
Message-Id:
<3367701.1101988465315‐at‐www2.local.freeml.net>
APIのSHFileOperation()を使用してメディア(FD)へ
複数のファイル(ばらばらの場所にあるファイル⇒フォルダごとのコピーはできない)
をコピーしたいのですが、容量オーバーになった時の動作が統一されておらず困って
います。
現状、容量がいっぱいになった時のファイルが上書き中であれば、「ディスクがいっ
ぱいになりました。」とダイアログが表示され、次のディスクの挿入を促してきま
す。ただし、容量がいっぱいになった時のファイルが上書きではなく新規にコピーし
ている場合、容量が足りません。と言うエラーとなり複数枚数に対応できません。

結論から言いますと、どちらでもいいのですが、失敗なら失敗、複数枚数OKならOKと
動作を統一させる必要があります。
フラグの組合せ、もしくはロジックの組み方で統一させることはできないでしょう?
Windowsのコピー処理は、上書きだろうがそうでなかろうが、統一されているように見
えます。Windowsはどのように実装しているやら・・・・・・・・・
SHFileOperation()は使ってないのでしょうか・・・・・・

現状のソースですが、
【環境】
 Windows2000proSP4
 VC++6.0 SP5
 MFCプログラミング
 
【ソース】
// ファイルコピーの設定
SHFILEOPSTRUCT shfileCopy;
memset(&shfileCopy,0x00,sizeof(SHFILEOPSTRUCT));
shfileCopy.hwnd = hParentWnd;
shfileCopy.wFunc=FO_COPY;
                       
shfileCopy.fFlags=FOF_NOCONFIRMATION|FOF_MULTIDESTFILES|FOF_NOCONFIRMMKD
IR;
shfileCopy.fAnyOperationsAborted=FALSE;
shfileCopy.lpszProgressTitle="ファイルコピー中...";
shfileCopy.pFrom=pcSrcPath;
shfileCopy.pTo=pcDesPath;

// コピー実行!
int iRet=SHFileOperation(&shfileCopy);

pFrom,pTo にはそれぞれフルパスにて「\0」区切りで最後が「\0\0」
で格納されております。

どなたか、おわかりにならないでしょうか?


上記ソースの
fFlagsに「FOF_NOERRORUI」を加えると何もメッセージダイアログが
出ないようにならないかと、付け加えてみると、SHFileOperation()が
即、かえってくるようになり戻り値に「1223」が帰ってくるしまつ
です。この戻り値の意味もよくわかりませんし・・・・・・・・
これはGetLastError()の値と考えるべきなのでしょうか。

よろしくお願いいたします。

Navigation

検索

[検索ヘルプ]

Maintener: Tietew <www.tietew.jp>
Powered by Ruby on Rails, Mongrel, PostgreSQL, and Hyper Estraier.
click here