$B%j%U%!%/%?%j%s%0$K$*$1$k(BC$B8@8l%W%m%0%i%^!<$n;ke@(b

$B:n@.(B:2006$BG/(B7$B7n(B2$BF|(B

$B5HED@?0l$N%[!<%`%z!<%8(b > $B%=%U%H%&%'%"9)3X(B > $B5;=Q%3%i%`(B > $B%*%V%8%'%/%H;X8~(B

$B%=%U%H%&%'%"$N3+H/$rB3$1$F$$$k$H!"%/%i%9$K$@$s$@$s%a%s%P!<4x?t$,a}$($f$$$c$f!"5pbg$k$j$c$f$7$^$&$3$h$,$"$k!#(b

$B5pBg2=$7$?%/%i%9$O!"(B1$B$D$N%/%i%9$K$?$/$5$s$N5!G=$r5M$a9~$_2a$.$?>uBV$K$J$C$F$$$k!#$3$&$$$C$?%/%i%9$O!"J,$+$j$K$/$/!";H$$$E$i$$$?$a!"%j%U%!%/%?%j%s%0$r9T$$!"J#?t$N%/%i%9$KJ,3d$9$k$3$H$K$J$k$@$m$&!#(B

$B$@$,!"%j%U%!%/%?%j%s%0$N$d$jJ}$O!"?M$K$h$C$F0[$J$k!#FC$K!"(BC$B8@8l$N%3!<%g%#%s%0$k7h$o$c$f$-$??m$,%/%i%9$r$7$9$k$H!"%*%V%8%'%/%H;X8~E*$K$OLdBj$N$"$k%/%i%9$,$G$-$F$7$^$&$3$H$,$"$k!#(B

$BL\
  1. Web$B$G8+$+$1$?NI$/$J$$Nc(B
  2. $B%3!<%@!<$n;ke@$,!"ite,@z$j%/%i%9$r:n$j=p$9(b
  3. $B%G%6%$%J!<$n;ke@$g!"%/%i%9$r:n$jd>$9(B
  4. Web$B$G8+$+$1$?Nc$N!"$=$NB>$NLdBjE@(B

Web$B$G8+$+$1$?NI$/$J$$Nc(B

$B$N(B

$B$K$O!"%U%!%$%k$N%3%T!<$r$9$k(bcfilecopy$b$h$$$&%/%i%9$rnc$k!"%a%s%p!<4x?t$,b?$9$.$k%/%i%9$r$7$9$kNc$,>R2p$5$l$F$$$k!#(B

$B$@$,!"$3$NNc$r8+$k$H!"%j%U%!%/%?%j%s%0$K$h$C$F!"ITE,@Z$J%$%s%?!<%u%'!<%9$r;}$d%/%i%9$,$g$-$f$7$^$c$f$$$k!#(b

$B$^$:$O!"$7$9$kA0$N!"%a%s%P!<4x?t$,b?2a$.$k(bcfilecopy$b%/%i%9$r0zmq$9$k!#(b

class CFileCopy {
 typedef bool (*UserCancelFunc)(const CFileCopy&,void*);
 typedef void (*DirDownFunc)(const CFileCopy&,const char*,void*);
 typedef void (*DirUpFunc)(const CFileCopy&,const char*,void*);
 typedef void (*FileCopyStartFunc)(const CFileCopy&,const char*,void*);
 typedef void (*FileCopyEndFunc)(const CFileCopy&,const char*,void*);
 ...($BCfN,(B)...
public:
 CFileCopy();
 virtual ~CFileCopy();
 void SetSourceDirName(const char*); //$B%3%T!<85$n%g%#%l%/%h%jl>$r%;%C%H$9$k(B
 void SetDestDirName(const char*); //$B%3%T!<@h$n%g%#%l%/%h%jl>$r%;%C%H$9$k(B
 void SetCreateDir(bool); //$B%3%T!<@h$n%g%#%l%/%h%j$,b8:_$7$j$$$h$-$k:n@.$9$k$+$n;xdj(b
 void SetUserCancelFunc(UserCancelFunc); //$B%3%T!e>:;~$K8F$S=P$9(B
 //$B%3!<%k%p%c%/4x?t$n%;%c%h(b
 void SetDUFuncMisc(void*); //$B%G%#%l%/%H%j>e>:;~$N%3!<%k%p%c%/$nbh(b3$b0z$-?t$n%;%c%h(b
 void SetFileCopyStartFunc(FileCopyStartFunc); //1$B$D$N%U%!%$%k%3%T!<3+;o;~$k8f$s=p$9%3!<%k%p%c%/4x?t$n%;%c%h(b
 void SetFCStartFuncMisc(void*); //1$B$D$N%U%!%$%k%3%T!<3+;o;~$n%3!<%k%p%c%/$nbh(b3$b0z$-?t$n%;%c%h(b
 void SetFileCopyEndFunc(FileCopyEndFunc); //1$B$D$N%U%!%$%k%3%T!<=*n;;~$k8f$s=p$9%3!<%k%p%c%/4x?t$n%;%c%h(b
 void SetFCEndFuncMisc(void*); //1$B$D$N%U%!%$%k%3%T!<=*n;;~$n%3!<%k%p%c%/$nbh(b3$b0z$-?t$n%;%c%h(b
 void ExecCopy(void); //$B%3%T!<$9$k(b
 int GetErrorCode(void); //$B%(%i!<%3!<%i$r$($k(b
};
 

$B$7$7$?7k2L$r0zMQ$9$k!#(B

class CFileCopy {
 class CallBack {
 protected:
 void* mMisc;
 public:
 CallBack(){ mMisc = NULL; };
 virtual ~CallBack();
 virtual bool UserCancel(void*) = 0; //$B%3%T!e>:(B
 virtual void FileCopyStart(const char*,void*) = 0; //1$B$D$N%U%!%$%k%3%T!<3+;o(b
 virtual void FileCopyEnd(const char*,void*) = 0; //1$B$D$N%U%!%$%k%3%T!<=*n;(b
 void SetMisc(void* ioMisc){ mMisc = ioMisc; }; //Misc$B0z$-?t$N%;%C%H(B
 };
public:
 CFileCopy();
 virtual ~CFileCopy();
 int SetParam(const char*,const char*,bool,CallBack*); //$B%Q%i%a!<%?$r%;%c%h$9$k(b
 int ExecCopy(void); //$B%3%T!<$9$k(b
};
class MyFileCopyCallBack : public CFileCopy::CallBack {
public:
 virtual bool UserCancel(void*);
 virtual void DirDown(const char*,void*);
 virtual void DirUp(const char*,void*);
 virtual void FileCopyStart(const char*,void*);
 virtual void FileCopyEnd(const char*,void*);
};
 

$B$3$NNc$G$O!"(BCFileCopy$B%/%i%9$N%a%s%P!<4x?t$n?t$r8:$i$=$&$h$7$?7k2l!"

int SetParam(const char*,const char*,bool,CallBack*); //$B%Q%i%a!<%?$r%;%c%h$9$k(b
 

$B%3!<%@!<$n;ke@$,!"ite,@z$j%/%i%9$r:n$j=p$9(b

$BCx$7$9$kA0$N%/%i%9$NLdBjE@$r!"

$B%3!<%k%p%c%/4x?t$n@_dj$,$d$?$ib?$/(b,$b%3%t!<$=$n$b$n$r

$B$=$7$F!"

$B$b$7$bI.y$r$5$;(B,$B$^$?%Q%i%a!<%?@_dj$o(b,$b$^$h$a$f(b1$b$d$n%a%s%p4x?t$k$7$f$7$^$$(b($b$3$&$9$k$3$h$g8f$s=p$7k:$l(b,$b8f$s=p$7=ghv$r$i$&$9$k$+$ng:$_$,2r7h$7$^$9(b),$b$9$c$-$j$9$kj}8~$k$^$h$a$k$g$7$g$&!#(b

$B$3$l$O!"$3$N(BCFileCopy$B%/%i%9$rMxMQ$7$?%W%m%0%i%`$r%3!<%g%#%s%0$9$k!"%3!<%@!<$n;ke@$+$i8+$?0u8+$g$"$m$&!#(b

$B85!9!"$3$N5-;v$O!";(;o!V(BC MAGAZINE$B!W$K7G:\$5$l$?$b$N$G$"$k$?$a!"(BC$B8@8l%W%m%0%i%^!<$n;ke@$g=q$+$l$f$$$k$h$&$k;w$o$l$k!#(b

$B$@$,!"%3!<%@!<$n;ke@$k4p$e$$$f%/%i%9$r:n$jd>$9$H!"5U$K!"%/%i%9$,J,$+$j$K$/$/!";H$$$E$i$/$J$C$F$7$^$&$3$H$b$"$k!#(B

$B$3$NNc$G$O!"3N$+$K!"(BCFileCopy$B%/%i%9$N%a%s%P!<4x?t$n?t$o7`e*$k8:>/$7$?!#%3%T!<$r$9$k$^$g$na0=`hw$o(b1$b9t$g:q$`$7!"4x?t$r8f$s=p$9=g=x$r4v0c$($k$3$h$bl5$/$j$c$?$@$m$&!#(b

$B$7$+$7!"%Q%i%a!<%?$n@_dj$r(bsetparam$b4x?t$g$^$h$a$?$3$h$k$h$j!"5q$c$f!"(bcfilecopy$b%/%i%9$n5!g=$,j,$+$i$j$/$j$c$f$7$^$c$?!#$7$7$?8e$N%/%i%9$G$O!"%3%T!<@h$n%g%#%l%/%h%j$,b8:_$7$j$$$h$-$k:n@.$9$k$+$n;xdj$,9t$($k$3$h$r!"%$%s%?!<%u%'!<%9$+$ifi$_

$B$^$?!"K\Mh$O8_$$$KL54X78$J!"FHN)$7$?%Q%i%a!<%?$r!"$9$y$f0ley$k;xdj$9$k$h$&$k$7$?$?$a!"%/%i%9$n;h$$j}$k@)8b$,@8$8$f$7$^$c$?!#nc$($p!"$"$k%g%#%l%/%h%j$r(b2$b%u=j$k%3%t!<$9$k>l9g$O!"%3%T!<@h$n%g%#%l%/%h%jl>$@$1$rJQ99$7$F$+$i(BExecCopy$B4X?t$r8F$S$?$$$H$3$m$@$,!"$7$7$?%/%i%9$G$O!"$9$Y$F$N%Q%i%a!<%?$r@_dj$7d>$5$J$/$F$O$J$i$J$$!#(B

$B%G%6%$%J!<$n;ke@$g!"%/%i%9$r:n$jd>$9(B

$B%a%s%P!<4x?t$r>/$J$/$9$l$P!"J,$+$j$d$9$$%/%i%9$K$J$kLu$G$O$J$$!#%3!<%g%#%s%0$,(b1$b9t$g:q$`$n$,!";h$$$d$9$$%/%i%9$h$o8b$i$j$$!#(b

$BNc$($P!"(BJava$B8@8l$N(BFile$B%/%i%9$O!"Hs>o$KNI$/;H$o$l$F$$$k4pK\E*$J%/%i%9$G$"$k!#$3$N%/%i%9$O!"/$J$$$O$:$@!#(B

$B%j%U%!%/%?%j%s%0$r9T$$!"%/%i%9$r:n$jD>$9$N$G$"$l$P!"%3!<%g%#%s%0$r$9$k?m$n;ke@$g$o$j$/!"%/%i%9$r@_7w$9$k%g%6%$%j!<$n;ke@$g9m$($k$3$h$,=emw$@!#(b

$B%G%6%$%J!<$n;ke@$g!"%/%i%9$nlr3d$d!"$"$k$y$-;q$r9m$($k$h!"%u%!%$%k$r%3%t!<$9$k(bcfilecopy$b%/%i%9$n%$%s%?!<%u%'!<%9$o!"

$B%Q%i%a!<%?$o8djl$k;xdj$9$k!#(b

$B%W%m%0%i%_%s%0$N6X$8R2p$5$l$F$$$kNc$G$O!"2<5-$n(b4$b$d$n%q%i%a!<%?$r0ley$k@_dj$9$k(bsetparam$b4x?t$,:n$i$l$?!#(b

  • $B%3%T!<85$n%g%#%l%/%h%jl>(B
  • $B%3%T!<@h$n%g%#%l%/%h%jl>(B
  • $B%3%T!<@h$n%g%#%l%/%h%j$,b8:_$7$j$$$h$-$k:n@.$9$k$+$n;xdj(b
  • $B=hM}$,9T$o$l$?;~$K8F$S=P$5$l$k%3!<%k%p%c%/@lmq$n%/%i%9(b

$B$@$,!"$3$l$i(B4$B$D$N%Q%i%a!<%?$o!"i,$:f1;~$k;xdj$7$j$1$l$p$j$i$j$$$b$n$g$o$j$$!#$`$7$m!"8_$$$kfhn)$j$b$n$g$"$k!#(b

$B$=$3$G!"$3$l$i$rJL8D$K;XDj$G$-$k$h$&$K!"(B4$B$D$N%a%s%P!<4x?t$kj,$1$k!#$3$ne@$k4x$7$f$o!";ve!"%j%U%!%/%?%j%s%0$r$9$kA0$NJ}$,NI$+$C$?!"$H8@$($k!#(B

$B%3%T!<85$n%g%#%l%/%h%jl>!"%3%T!<@h$n%g%#%l%/%h%jl>$O!"%3%s%9%H%i%/%?$G;XDj$9$k!#(B

CFileCopy$B%*%V%8%'%/%H$N$"$k$Y$-;Q$r9M$($k$H!"$3$N(B2$B$D$N%Q%i%a!<%?$oi,?\$j$n$g!"%3%s%9%h%i%/%?$g;xdj$9$k!#(b

$B%W%m%0%i%_%s%0$N6X$8R2p$5$l$F$$$kNc$G$O!"6u$N%3%s%9%H%i%/%?$7$+MQ0U$7$F$$$J$$$,!"@8@.D>8e$N%*%V%8%'%/%H$NN)>l$,9M$($i$l$F$$$J$$!#@dBP$K(BSetParam$B4X?t$r8F$P$J$/$F$O$$$1$J$$!"$H$$$&!"0EL[$N@)Ls$,$"$k!#(B

$BDLCN@h$OJ#?tEPO?$G$-$k$h$&$K$9$k!#(B

$B%W%m%0%i%_%s%0$N6X$8R2p$5$l$F$$$kNc$G$O!"DLCN$r$9$k(BCallBack$B$NAj

$B<+j,$,$=$n%/%i%9$r;h$&;~$n!"l\@h$n;h$$j}$n$3$h$7$+f,$kl5$$$h!"$3$n$h$&$jitmw$j@)8b$rf~$l$f$7$^$$$d$9$$!#(b

$B%U%i%0$N;XDj$rA}$d$9!#(B

$B%W%m%0%i%_%s%0$N6X$8R2p$5$l$F$$$kNc$G$O!"%3%T!<@h$n%g%#%l%/%h%j$,b8:_$7$j$$$h$-$k:n@.$9$k$+$n;xdj$7$+$g$-$j$$$h$&$k$j$c$f$$$?!#(b

$B$@$,!"(BCFileCopy$B%/%i%9$N$"$k$Y$-;Q$r9M$($k$H!"

  • $B%3%T!<@h$n%u%!%$%k$,$9$g$kb8:_$7$?>l9g$K!">e=q$-$9$k$+!#(B
  • $B$"$k(B1$B$D$N%U%!%$%k$G%(%i!<$,5/$-$?;~$k!"$=$n;~e@$g=hm}$rcf;_$9$k$+!"b39t$9$k$+!#(b

$B$A$J$_$K!"%W%m%0%i%_%s%0$N6X$8R2p$5$l$F$$$kNc$G$O!"$3$N$h$&$JMWK>$,$"$C$?;~!"(BSetParam$B4X?t$N0z?t$r$I$s$I$sA}$d$9%O%a$K$J$C$F$7$^$&!"$H$$$&LdBj$b$"$k!#(B

$B$A$J$_$K!"%W%m%0%i%_%s%0$N6X$8R2p$5$l$F$$$kNc$G$O!"(BGetErrorCode$B$H$$$&4X?t$,:o=|$5$l!"(BExecCopy$B4X?t$,%(%i!<%3!<%i$rjv$9$h$&$kd>$5$l$F$$$?!#$3$l$O$*$=$i$/!"(BExecCopy$B4X?t$H(BGetErrorCode$B4X?t$H!"(B2$B$D$N4X?t$rB3$1$F8F$S=P$9$N$,LLE]$@$+$i!"$H$$$&%3!<%g%#%s%0>e$NM}M3$GD>$5$l$?$h$&$K;W$o$l$k!#(B

$B$@$,$3$l$b!"C1$K8F$S=P$9$N$,LLE]$@$+$i!"$H$$$&M}M3$G$O$J$/!"(BCFileCopy$B%/%i%9$NLr3d$+$iH=CG$9$k$Y$-$@!#(BCFileCopy$B%/%i%9$O!"uBV$d

Web$B$G8+$+$1$?Nc$N!"$=$NB>$NLdBjE@(B

$B%W%m%0%i%_%s%0$N6X$8R2p$5$l$F$$$k%j%U%!%/%?%j%s%0$NNc$G$O!"$=$NB>$K$b!"$$$/$D$+$NLdBjE@$,$"$k!#:G8e$K!"$=$l$i$NLdBjE@$r;XE&$7$F$*$/!#(B

$B%X%C%@!<%u%!%$%k$k!"0z?t$njq?tl>$,=q$+$l$F$$$J$$!#(B

$B0z?t$K2?$rEO$;$PNI$$$N$+$r!"0z?t$NJQ?tL>$GI=$9$Y$-$G$"$k!#(B

$B%3%a%s%H$,0UL#$r0Y$7$F$$$J$$!#(B

$BNc$($P!"(BSetParam$B4X?t$N%3%a%s%H$O!V%Q%i%a!<%?$r%;%c%h$9$k!w$h$j$c$f$$$k$,!"$3$l$o2?$b=q$$$f$$$j$$$n$hf1$8$g$"$k!#(b

void$B%]%$%s%?$,;H$o$l$F$$$k!#(B

$B$3$l$G$O!"0z?t$H$7$F$I$N$h$&$J%G!<%?$,eo$5$l$k$n$+$,j,$+$i$j$$!#$d$^$j!"%/%i%94v$n%$%s%?!<%u%'!<%9$rdj5a$7$f$$$j$$$n$hf1$8$3$h$k$j$c$f$$$k!#(b

$B%-%c%9%H$r;H$(!"$H$$$&$3$H$J$N$@$m$&$,!"(BC++$B8@8l$G$N%-%c%9%H$O4m81$,>l9g$,B?$$!#$^$?!"@5$7$/%-%c%9%H$9$k$?$a$K$O!"%/%i%94V$G0EL[$NN;2r$,I,MW$K$J$k!#(B

$BL>A0$,ITE,@Z!#(B

CallBack$B$H$$$&!"(BC$B8@8l%W%m%0%i%^!<$i$7$$l>A0$,IU$1$i$l$F$$$k$,!"$3$3$O%G%6%$%s%Q%?!<%s$n(bobserver$b%q%?!<%s$,;h$o$l$f$$$k$n$g!"(bcfilecopyobserver$b$j$i$nl>A0$,NI$$!#(B

$B$^$?!"DLCN$r$9$k4X?t$NL>A0$,!"!V(BDirDown$B!W!V(BFileCopyStart$B!W$N$h$&$K$J$C$F$$$k$,!"$3$l$G$O=hM}$rA0$K$9$k!#Nc$($P!"!V(BNotifyDirDown$B!W$d!"!V(BFileCopyStarted$B!W$J$I!#(B

$B4XO">pJs(B

Copyright(C) Seiichi Yoshida ( comet@aerith.net ). All rights reserved.

$B%[!<%`(b

$BE7J8(B

$B%=%U%H%&%'%"9)3X(B

$B5;=Q%3%i%`(B

$B%=%U%H%&%'%"(B

$B8&5f3hF0(B

AltStyle $B$K$h$C$FJQ49$5$l$?%Z!<%8(b (->$B%*%j%8%J%k(B) /