int __stdcall CallbackProc(int _nNow, int _nMax, long _lData)\r
{\r
// \8d\\91¢\91Ì\82ð\8f\89\8aú\89»\81B\r
- TPI_PROCESSINFO piInfo;\r
- piInfo.uMessage = TPI_MESSAGE_STATUS;\r
- piInfo.uStatus = _nNow == 0 ? TPI_STATUS_BEGINPROCESS\r
- : _nNow == _nMax ? TPI_STATUS_ENDPROCESS\r
- : _nNow < 0 ? TPI_STATUS_OPENARCHIVE : TPI_STATUS_INPROCESS;\r
- piInfo.llProcessedSize = _nNow;\r
- piInfo.fiInfo.llUnpackedSize = _nMax;\r
-// piInfo.fiInfo.fnFileName = * (wxFileName *) _lData;\r
+ TPI_PROCESSINFO * piInfo = (TPI_PROCESSINFO *) _lData;\r
+ piInfo->uStatus = _nNow == 0 ? TPI_STATUS_BEGINPROCESS\r
+ : _nNow == _nMax ? TPI_STATUS_ENDPROCESS : TPI_STATUS_INPROCESS;\r
+ piInfo->llProcessedSize = _nNow;\r
+ piInfo->fiInfo.llUnpackedSize = _nMax;\r
\r
// \83R\81[\83\8b\83o\83b\83N\8aÖ\90\94\82É\91\97\90M\81B\r
- return g_prProc != NULL && g_prProc(TPI_NOTIFY_COMMON, & piInfo) == TPI_CALLBACK_CANCEL;\r
+ return g_prProc != NULL && g_prProc(TPI_NOTIFY_COMMON, piInfo) == TPI_CALLBACK_CANCEL;\r
}\r
\r
//******************************************************************************\r
{\r
return TPI_ERROR_U_USE_LIBRARY;\r
}\r
- PictureInfo piInfo;\r
- int nErrorCode = XpiErrorCodeConvert(((int (PASCAL *)(const char *, long, unsigned int, PictureInfo *)) fpProc)(_szArcName.ToUTF8(), 0, 0, & piInfo));\r
+ PictureInfo picInfo;\r
+ int nErrorCode = XpiErrorCodeConvert(((int (PASCAL *)(const char *, long, unsigned int, PictureInfo *)) fpProc)(_szArcName.ToUTF8(), 0, 0, & picInfo));\r
if (nErrorCode != TPI_ERROR_SUCCESS)\r
{\r
return nErrorCode;\r
return TPI_ERROR_U_USE_LIBRARY;\r
}\r
\r
- // \83R\81[\83\8b\83o\83b\83N\82ð\91\97\90M\81B\95Ö\8bX\8fã-1\82ð\91\97\90M\81B\r
+ // \83R\81[\83\8b\83o\83b\83N\82ð\91\97\90M\81B\r
wxFileName _fnArcName(_szArcName);\r
- if (CallbackProc(-1, 0, (long) & _fnArcName))\r
+ TPI_PROCESSINFO piInfo;\r
+ piInfo.uMessage = TPI_MESSAGE_STATUS;\r
+ piInfo.uStatus = TPI_STATUS_OPENARCHIVE;\r
+ piInfo.fiInfo.fnFileName = _fnArcName;\r
+ if (CallbackProc(0, 0, (long) & piInfo))\r
{\r
return TPI_ERROR_D_SKIPPED;\r
}\r
\r
// \83\81\83\82\83\8a\8fo\97Í\81B\r
HANDLE hInfo, hMemory;\r
- nErrorCode = XpiErrorCodeConvert(((int (PASCAL *)(const char *, long, unsigned int, HANDLE *, HANDLE *, FARPROC, long)) fpProc)(_szArcName.ToUTF8(), 0, 0, & hInfo, & hMemory, (FARPROC) CallbackProc, 0));\r
+ piInfo.uStatus = TPI_STATUS_INPROCESS;\r
+ // \8fo\97Í\96¼\8dì\90¬\81B\r
+ piInfo.fnDestination = _fnArcName;\r
+ piInfo.fnDestination.SetPath(_swInfo->fnDestinationDirectory.GetPath());\r
+ piInfo.fnDestination.SetExt(wxT("bmp"));\r
+ piInfo.fiInfo.fnFileName = wxFileName(piInfo.fnDestination.GetFullName());\r
+ nErrorCode = XpiErrorCodeConvert(((int (PASCAL *)(const char *, long, unsigned int, HANDLE *, HANDLE *, FARPROC, long)) fpProc)(_szArcName.ToUTF8(), 0, 0, & hInfo, & hMemory, (FARPROC) CallbackProc, (long) & piInfo));\r
if (nErrorCode == TPI_ERROR_SUCCESS && (hMemory == NULL || hInfo == NULL))\r
{\r
return TPI_ERROR_UNDEFINED;\r
{\r
return TPI_ERROR_U_USE_LIBRARY;\r
}\r
- if (! XpiErrorCodeConvert(((BOOL (PASCAL *)(int)) fpProc)(piInfo.colorDepth)))\r
+ if (! XpiErrorCodeConvert(((BOOL (PASCAL *)(int)) fpProc)(picInfo.colorDepth)))\r
{\r
return TPI_ERROR_ARC_UNSUPPORTED;\r
}\r
\r
- // \8fo\97Í\96¼\8dì\90¬\81B\r
- wxString szTargetPath = _swInfo->fnDestinationDirectory.GetPathWithSep() + _fnArcName.GetName() + wxT(".bmp");\r
-\r
// \8f\91\82«\8d\9e\82Ý\81B\r
fpProc = ::GetProcAddress(hXPI, "CreatePicture");\r
if (fpProc == NULL)\r
{\r
return TPI_ERROR_U_USE_LIBRARY;\r
}\r
- nErrorCode = XpiErrorCodeConvert(((int (PASCAL *)(const char *, long, HANDLE *, HANDLE *, PictureInfo *, FARPROC, long)) fpProc)(szTargetPath.ToUTF8(), 0, & hInfo, & hMemory, & piInfo, (FARPROC) CallbackProc, 0));\r
+ nErrorCode = XpiErrorCodeConvert(((int (PASCAL *)(const char *, long, HANDLE *, HANDLE *, PictureInfo *, FARPROC, long)) fpProc)(piInfo.fnDestination.GetFullPath().ToUTF8(), 0, & hInfo, & hMemory, & picInfo, (FARPROC) CallbackProc, (long) & piInfo));\r
::LocalUnlock(hInfo);\r
::LocalUnlock(hMemory);\r
::LocalFree(hInfo);\r
::LocalFree(hMemory);\r
::FreeLibrary(hXPI);\r
\r
+ // \8dÅ\8cã\82É\83R\81[\83\8b\83o\83b\83N\82ð\91\97\90M\81B\r
+ piInfo.uStatus = TPI_STATUS_CLOSEARCHIVE;\r
+ piInfo.fiInfo.fnFileName = _fnArcName;\r
+ if (CallbackProc(0, 0, (long) & piInfo))\r
+ {\r
+ return TPI_ERROR_D_SKIPPED;\r
+ }\r
+\r
return nErrorCode;\r
}\r
\r