OSDN Git Service

コールバック関数に送信する情報を変更。
authorsirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Sun, 22 Nov 2009 02:58:00 +0000 (02:58 +0000)
committersirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Sun, 22 Nov 2009 02:58:00 +0000 (02:58 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/tpi/tpi@145 9df91469-1e22-0410-86e7-ea8537beb833

src/plugin/xpiLibrary/xpiLibrary.cpp

index 465adb7..ba09e7d 100644 (file)
@@ -62,17 +62,14 @@ BOOL __stdcall DllMain(HMODULE, DWORD fdwReason, void *)
 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
@@ -338,8 +335,8 @@ int __stdcall Command
        {\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
@@ -352,16 +349,26 @@ int __stdcall Command
                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
@@ -386,27 +393,32 @@ int __stdcall Command
        {\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