Diff for /np2/win9x/win32sub.cpp between versions 1.4 and 1.5

version 1.4, 2007/10/26 14:38:34 version 1.5, 2007/12/28 20:36:40
Line 1 Line 1
 #include        "compiler.h"  #include        "compiler.h"
   #include        "np2.h"
   
 void __msgbox(const char *title, const char *msg) {  void __msgbox(const char *title, const char *msg) {
   
Line 19  void __msgbox(const char *title, const c Line 19  void __msgbox(const char *title, const c
   
   
 // WinAPIだと Win95でバグあるの  // WinAPIだと Win95でバグあるの
 int loadstringresource(HINSTANCE hInstance, UINT uID,  int _loadstringresource(HINSTANCE hInstance, UINT uID,
                                                                                 LPTSTR lpBuffer, int nBufferMax) {                                                                                  LPTSTR lpszBuffer, int nBufferMax)
   {
         HMODULE hModule;          HMODULE hModule;
         HRSRC   hRsrc;          HRSRC   hRsrc;
         DWORD   dwResSize;          DWORD   dwResSize;
Line 32  int loadstringresource(HINSTANCE hInstan Line 32  int loadstringresource(HINSTANCE hInstan
   
         hModule = (HMODULE)hInstance;          hModule = (HMODULE)hInstance;
         hRsrc = FindResource(hModule, MAKEINTRESOURCE((uID >> 4) + 1), RT_STRING);          hRsrc = FindResource(hModule, MAKEINTRESOURCE((uID >> 4) + 1), RT_STRING);
         if (hRsrc == NULL) {          if (hRsrc == NULL)
                 return(0);          {
                   return 0;
         }          }
         dwResSize = SizeofResource(hModule, hRsrc);          dwResSize = SizeofResource(hModule, hRsrc);
         hGlobal = LoadResource(hModule, hRsrc);          hGlobal = LoadResource(hModule, hRsrc);
         if (hGlobal == NULL) {          if (hGlobal == NULL)
                 return(0);          {
                   return 0;
         }          }
         pRes = (UINT16 *)LockResource(hGlobal);          pRes = (UINT16 *)LockResource(hGlobal);
         dwPos = 0;          dwPos = 0;
         uID = uID & 15;          uID = uID & 15;
         while((uID) && (dwPos < dwResSize)) {          while((uID) && (dwPos < dwResSize))
           {
                 dwPos += pRes[dwPos] + 1;                  dwPos += pRes[dwPos] + 1;
                 uID--;                  uID--;
         }          }
         if (dwPos >= dwResSize) {          if (dwPos >= dwResSize)
                 return(0);          {
                   return 0;
         }          }
   
         nLength = pRes[dwPos];          nLength = pRes[dwPos];
         dwPos++;          dwPos++;
         nLength = min(nLength, (int)(dwResSize - dwPos));          nLength = min(nLength, (int)(dwResSize - dwPos));
 #if defined(_UNICODE)  #if defined(_UNICODE)
         if ((lpBuffer != NULL) && (nBufferMax > 0)) {          if ((lpszBuffer != NULL) && (nBufferMax > 0))
           {
                 nBufferMax--;                  nBufferMax--;
                 nLength = min(nLength, nBufferMax);                  nLength = min(nLength, nBufferMax);
                 if (nLength) {                  if (nLength)
                         CopyMemory(lpBuffer, pRes + dwPos, nLength * sizeof(UINT16));                  {
                           CopyMemory(lpszBuffer, pRes + dwPos, nLength * sizeof(UINT16));
                 }                  }
                 lpBuffer[nLength] = '\0';                  lpszBuffer[nLength] = '\0';
         }          }
 #else  #else
         if ((lpBuffer != NULL) && (nBufferMax > 0)) {          if ((lpszBuffer != NULL) && (nBufferMax > 0))
           {
                 nBufferMax--;                  nBufferMax--;
                 if (nBufferMax == 0) {                  if (nBufferMax == 0)
                   {
                         nLength = 0;                          nLength = 0;
                 }                  }
         }          }
         else {          else
                 lpBuffer = NULL;          {
                   lpszBuffer = NULL;
                 nBufferMax = 0;                  nBufferMax = 0;
         }          }
         nLength = WideCharToMultiByte(CP_ACP, 0, (WCHAR *)(pRes + dwPos), nLength,          nLength = WideCharToMultiByte(CP_ACP, 0, (WCHAR *)(pRes + dwPos), nLength,
                                                                                         lpBuffer, nBufferMax, NULL, NULL);                                                                                  lpszBuffer, nBufferMax, NULL, NULL);
         if (lpBuffer) {          if (lpszBuffer)
                 lpBuffer[nLength] = '\0';          {
                   lpszBuffer[nLength] = '\0';
         }          }
 #endif  #endif
         return(nLength);          return(nLength);
 }  }
   
 // WinAPIだと Win95でバグあるの  // WinAPIだと Win95でバグあるの
 TCHAR *lockstringresource(HINSTANCE hInstance, LPCTSTR pszString) {  LPTSTR _lockstringresource(HINSTANCE hInstance, LPCTSTR lpcszString)
   {
         TCHAR   *pszRet;          LPTSTR  lpszRet;
         int             nSize;          int             nSize;
   
         pszRet = NULL;          lpszRet = NULL;
         if (HIWORD(pszString)) {          if (HIWORD(lpcszString))
                 nSize = (lstrlen(pszString) + 1) * sizeof(TCHAR);          {
                 pszRet = (TCHAR *)_MALLOC(nSize, "");                  nSize = (lstrlen(lpcszString) + 1) * sizeof(TCHAR);
                 if (pszRet) {                  lpszRet = (LPTSTR)_MALLOC(nSize, "");
                         CopyMemory(pszRet, pszString, nSize);                  if (lpszRet)
                   {
                           CopyMemory(lpszRet, lpcszString, nSize);
                 }                  }
         }          }
         else if (LOWORD(pszString)) {          else if (LOWORD(lpcszString))
                 nSize = loadstringresource(hInstance, (UINT)pszString, NULL, 0);          {
                 if (nSize) {                  nSize = loadstringresource((UINT)lpcszString, NULL, 0);
                         pszRet = (TCHAR *)_MALLOC((nSize + 1) * sizeof(TCHAR), "");                  if (nSize)
                         if (pszRet) {                  {
                                 loadstringresource(hInstance, (UINT)pszString,                          lpszRet = (LPTSTR)_MALLOC((nSize + 1) * sizeof(TCHAR), "");
                                                                                                                 pszRet, nSize + 1);                          if (lpszRet)
                           {
                                   loadstringresource((UINT)lpcszString, lpszRet, nSize + 1);
                         }                          }
                 }                  }
         }          }
         return(pszRet);          return lpszRet;
   }
   
   
   // ----
   
   int loadstringresource(UINT uID, LPTSTR lpszBuffer, int nBufferMax)
   {
           return _loadstringresource(g_hInstance, uID, lpszBuffer, nBufferMax);
 }  }
   
 void unlockstringresource(TCHAR *pszString) {  LPTSTR lockstringresource(LPCTSTR lpcszString)
   {
           return  _lockstringresource(g_hInstance, lpcszString);
   }
   
         if (pszString) {  void unlockstringresource(LPTSTR lpszString)
                 _MFREE(pszString);  {
           if (lpszString)
           {
                   _MFREE(lpszString);
         }          }
 }  }
   

Removed from v.1.4  
changed lines
  Added in v.1.5


RetroPC.NET-CVS <cvs@retropc.net>