TPI_PROC g_prProc;\r
\r
//******************************************************************************\r
-// Inside Functions\r
-//******************************************************************************\r
-\r
-wxDateTime FileTimeToWxDateTime(FILETIME * pft)\r
-{\r
- FILETIME ftLocal;\r
- SYSTEMTIME st;\r
- if (! ::FileTimeToLocalFileTime(pft, & ftLocal) || ! ::FileTimeToSystemTime(& ftLocal, & st))\r
- {\r
- return (time_t) 0;\r
- }\r
- wxDateTime dt(st.wDay, wxDateTime::Month(st.wMonth - 1), st.wYear, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);\r
- return dt;\r
-}\r
-\r
-//******************************************************************************\r
-// Callback Wrapper\r
+// Inline Functions\r
//******************************************************************************\r
\r
#define MyConvEI322PI(EI, strconv) \\r
piInfo.fnDestination = wxFileName(strconv(ex->szAddFileName)); \\r
g_prProc(TPI_NOTIFY_COMMON, & piInfo);\r
\r
+#define MySetArcSize(api_base, var) \\r
+ fpProc = ::GetAPIAddress(#api_base L"Ex", false); \\r
+ if (fpProc != NULL) \\r
+ { \\r
+ ((BOOL (__stdcall *)(void *, LONGLONG *)) fpProc)(_hArchive, (LONGLONG *) & _aiInfo->var); \\r
+ } \\r
+ else \\r
+ { \\r
+ fpProc = ::GetAPIAddress(#api_base, false); \\r
+ if (fpProc != NULL) \\r
+ { \\r
+ _aiInfo->var = ((DWORD (__stdcall *)(void *)) fpProc)(_hArchive); \\r
+ } \\r
+ }\r
+\r
+#define MySetArcTime(api_base, var, ismod) \\r
+ fpProc = ::GetAPIAddress(#api_base L"64", false); \\r
+ if (fpProc != NULL) \\r
+ { \\r
+ ((BOOL (__stdcall *)(void *, LONGLONG *)) fpProc)(_hArchive, & ll); \\r
+ _aiInfo->var.Set((time_t) ll); \\r
+ } \\r
+ else \\r
+ { \\r
+ fpProc = ::GetAPIAddress(#api_base L"Ex", false); \\r
+ if (fpProc != NULL) \\r
+ { \\r
+ ((BOOL (__stdcall *)(void *, FILETIME *)) fpProc)(_hArchive, & ft); \\r
+ _aiInfo->var = FileTimeToWxDateTime(& ft); \\r
+ } \\r
+ else \\r
+ { \\r
+ fpProc = ::GetAPIAddress(#api_base, false); \\r
+ if (fpProc != NULL) \\r
+ { \\r
+ _aiInfo->var.Set((time_t) ((DWORD (__stdcall *)(void *)) fpProc)(_hArchive)); \\r
+ } \\r
+ else \\r
+ { \\r
+ if (ismod) \\r
+ { \\r
+ fpProc = ::GetAPIAddress("GetArcDate", false); \\r
+ WORD wDate = fpProc == NULL ? 0 : ((WORD (__stdcall *)(void *)) fpProc)(_hArchive); \\r
+ fpProc = ::GetAPIAddress("GetArcTime", false); \\r
+ WORD wTime = fpProc == NULL ? 0 : ((WORD (__stdcall *)(void *)) fpProc)(_hArchive); \\r
+ _aiInfo->var.SetFromDOS(MAKELONG(wTime, wDate)); \\r
+ } \\r
+ } \\r
+ } \\r
+ }\r
+\r
+#define GetAPIAddress(name, unicode) GetProcAddress(g_LibInfo.hLib, (g_LibInfo.szPrefix + wxT(name) + ((unicode && g_LibInfo.fUnicode) ? wxT("W") : wxEmptyString)).char_str())\r
+#define GetAPIAddressAlt(name, unicode) GetProcAddress(g_LibInfoAlt.hLib, (g_LibInfoAlt.szPrefix + wxT(name) + ((unicode && g_LibInfoAlt.fUnicode) ? wxT("W") : wxEmptyString)).char_str())\r
+\r
+//******************************************************************************\r
+// Callback Wrapper\r
+//******************************************************************************\r
+\r
BOOL __stdcall CallbackProc(HWND, unsigned int _uMsg, unsigned int _uState, void * _lpEis)\r
{\r
- if (_uMsg != ::RegisterWindowMessage(WM_ARCEXTRACT))\r
+ static unsigned int uWM = ::RegisterWindowMessage(WM_ARCEXTRACT);\r
+ if (_uMsg != uWM)\r
{\r
// 独自仕様などに対する予備コード。\r
return TRUE;\r
// Inside Functions\r
//******************************************************************************\r
\r
-#define GetAPIAddress(name, unicode) GetProcAddress(g_LibInfo.hLib, (g_LibInfo.szPrefix + wxT(name) + ((unicode && g_LibInfo.fUnicode) ? wxT("W") : wxEmptyString)).char_str())\r
-#define GetAPIAddressAlt(name, unicode) GetProcAddress(g_LibInfoAlt.hLib, (g_LibInfoAlt.szPrefix + wxT(name) + ((unicode && g_LibInfoAlt.fUnicode) ? wxT("W") : wxEmptyString)).char_str())\r
-\r
int ErrorCodeConvert(int nErrorCode)\r
{\r
switch (nErrorCode)\r
return nErrorCode;\r
}\r
\r
-#define MySetArcSize(api_base, var) \\r
- fpProc = ::GetAPIAddress(#api_base L"Ex", false); \\r
- if (fpProc != NULL) \\r
- { \\r
- ((BOOL (__stdcall *)(void *, LONGLONG *)) fpProc)(_hArchive, (LONGLONG *) & _aiInfo->var); \\r
- } \\r
- else \\r
- { \\r
- fpProc = ::GetAPIAddress(#api_base, false); \\r
- if (fpProc != NULL) \\r
- { \\r
- _aiInfo->var = ((DWORD (__stdcall *)(void *)) fpProc)(_hArchive); \\r
- } \\r
- }\r
-\r
-#define MySetArcTime(api_base, var, ismod) \\r
- fpProc = ::GetAPIAddress(#api_base L"64", false); \\r
- if (fpProc != NULL) \\r
- { \\r
- ((BOOL (__stdcall *)(void *, LONGLONG *)) fpProc)(_hArchive, & ll); \\r
- _aiInfo->var.Set((time_t) ll); \\r
- } \\r
- else \\r
- { \\r
- fpProc = ::GetAPIAddress(#api_base L"Ex", false); \\r
- if (fpProc != NULL) \\r
- { \\r
- ((BOOL (__stdcall *)(void *, FILETIME *)) fpProc)(_hArchive, & ft); \\r
- _aiInfo->var = FileTimeToWxDateTime(& ft); \\r
- } \\r
- else \\r
- { \\r
- fpProc = ::GetAPIAddress(#api_base, false); \\r
- if (fpProc != NULL) \\r
- { \\r
- _aiInfo->var.Set((time_t) ((DWORD (__stdcall *)(void *)) fpProc)(_hArchive)); \\r
- } \\r
- else \\r
- { \\r
- if (ismod) \\r
- { \\r
- fpProc = ::GetAPIAddress("GetArcDate", false); \\r
- WORD wDate = fpProc == NULL ? 0 : ((WORD (__stdcall *)(void *)) fpProc)(_hArchive); \\r
- fpProc = ::GetAPIAddress("GetArcTime", false); \\r
- WORD wTime = fpProc == NULL ? 0 : ((WORD (__stdcall *)(void *)) fpProc)(_hArchive); \\r
- _aiInfo->var.SetFromDOS(MAKELONG(wTime, wDate)); \\r
- } \\r
- } \\r
- } \\r
- }\r
-\r
int __stdcall GetArchiveInformation\r
(\r
void * _hArchive,\r