Changeset 1612 for trunk/src/user32/loadres.cpp
- Timestamp:
- Nov 5, 1999, 1:54:11 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/user32/loadres.cpp
r1606 r1612 1 /* $Id: loadres.cpp,v 1.1 3 1999-11-05 09:16:21sandervl Exp $ */1 /* $Id: loadres.cpp,v 1.14 1999-11-05 12:54:10 sandervl Exp $ */ 2 2 3 3 /* … … 6 6 * Copyright 1998 Sander van Leeuwen 7 7 * 8 * Parts based on Wine code (objects\bitmap.c ):8 * Parts based on Wine code (objects\bitmap.c, loader\resource.c): 9 9 * 10 10 * Copyright 1993 Alexandre Julliard 11 11 * 1998 Huw D M Davies 12 * 1993 Robert J. Amstadt 12 13 * 13 14 * Project Odin Software License can be found in LICENSE.TXT … … 25 26 //****************************************************************************** 26 27 //****************************************************************************** 27 int WIN32API LoadStringA(HINSTANCE hinst, UINT wID, LPSTR lpBuffer, int cchBuffer) 28 INT WIN32API LoadStringA(HINSTANCE instance, UINT resource_id, 29 LPSTR buffer, INT buflen ) 30 { 31 INT retval; 32 LPWSTR buffer2 = NULL; 33 34 if (buffer && buflen) 35 buffer2 = (LPWSTR)HeapAlloc( GetProcessHeap(), 0, buflen * 2 ); 36 37 retval = LoadStringW(instance,resource_id,buffer2,buflen); 38 39 if (buffer2) 40 { 41 if (retval) { 42 lstrcpynWtoA( buffer, buffer2, buflen ); 43 retval = lstrlenA( buffer ); 44 } 45 else 46 *buffer = 0; 47 HeapFree( GetProcessHeap(), 0, buffer2 ); 48 } 49 return retval; 50 } 51 //****************************************************************************** 52 //****************************************************************************** 53 int WIN32API LoadStringW(HINSTANCE hinst, UINT wID, LPWSTR lpBuffer, int cchBuffer) 28 54 { 29 55 Win32Resource *winres; 30 LPWSTR resstring; 31 int resstrlen = 0; 32 33 winres = (Win32Resource *)FindResourceA(hinst, (LPSTR)wID, RT_STRINGA); 34 if(winres == NULL) { 35 dprintf(("LoadStringA NOT FOUND from %X, id %d buffersize %d\n", hinst, wID, cchBuffer)); 36 //TODO: BAD HACK! 37 if(cchBuffer > 3) 38 { 39 strcpy(lpBuffer, "XXX"); 40 return 3; 41 } 42 //TODO: BAD HACK! 43 *lpBuffer = 0; 44 return 0; 45 } 46 47 resstring = (LPWSTR)winres->lockResource(); 48 if(resstring) { 49 resstrlen = min(lstrlenW(resstring)+1, cchBuffer); 50 lstrcpynWtoA(lpBuffer, resstring, resstrlen); 51 lpBuffer[resstrlen-1] = 0; 52 resstrlen--; 53 dprintf(("LoadStringA (%d) %s", resstrlen, lpBuffer)); 54 } 55 delete winres; 56 57 dprintf(("LoadStringA from %X, id %d buffersize %d\n", hinst, wID, cchBuffer)); 58 return(resstrlen); 59 } 60 //****************************************************************************** 61 //****************************************************************************** 62 int WIN32API LoadStringW(HINSTANCE hinst, UINT wID, LPWSTR lpBuffer, int cchBuffer) 63 { 64 Win32Resource *winres; 65 LPWSTR resstring; 66 int resstrlen = 0; 67 68 winres = (Win32Resource *)FindResourceW(hinst, (LPWSTR)wID, RT_STRINGW); 56 WCHAR *p; 57 int string_num; 58 int i = 0; 59 60 /* Use bits 4 - 19 (incremented by 1) as resourceid, mask out 61 * 20 - 31. */ 62 winres = (Win32Resource *)FindResourceW(hinst, (LPWSTR)(((wID>>4)&0xffff)+1), RT_STRINGW); 69 63 if(winres == NULL) { 70 64 dprintf(("LoadStringW NOT FOUND from %X, id %d buffersize %d\n", hinst, wID, cchBuffer)); … … 73 67 } 74 68 75 resstring = (LPWSTR)winres->lockResource(); 76 if(resstring) { 77 resstrlen = min(lstrlenW(resstring)+1, cchBuffer); 78 lstrcpynW(lpBuffer, resstring, resstrlen); 79 lpBuffer[resstrlen-1] = 0; 80 resstrlen--; 69 p = (LPWSTR)winres->lockResource(); 70 if(p) { 71 string_num = wID & 0x000f; 72 for (i = 0; i < string_num; i++) 73 p += *p + 1; 74 75 if (lpBuffer == NULL) return *p; 76 i = min(cchBuffer - 1, *p); 77 if (i > 0) { 78 memcpy(lpBuffer, p + 1, i * sizeof (WCHAR)); 79 lpBuffer[i] = (WCHAR) 0; 80 } 81 else { 82 if (cchBuffer > 1) { 83 lpBuffer[0] = (WCHAR) 0; 84 return 0; 85 } 86 } 81 87 } 82 88 delete winres; 83 89 84 90 dprintf(("LoadStringW from %X, id %d buffersize %d\n", hinst, wID, cchBuffer)); 85 return( resstrlen);91 return(i); 86 92 } 87 93 //******************************************************************************
Note:
See TracChangeset
for help on using the changeset viewer.