|
|
/////////////////////////////////////////////////////////////////////////////
// Helper Function Declarations for res32/win32 r/w
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// General Declarations
#define Pad4(x) ((((x+3)>>2)<<2)-x)
#define PadPtr(x) ((((x+(sizeof(PVOID)-1))/sizeof(PVOID))*sizeof(PVOID))-x)
#define Pad16(x) ((((x+15)>>4)<<4)-x)
#define MAXSTR 8192
#define LPNULL 0L
#define MAXLEVELS 3
#define MFR_POPUP (MF_POPUP > 1) // Chicago file specific
/////////////////////////////////////////////////////////////////////////////
// General type Declarations
typedef unsigned char UCHAR;
typedef UCHAR * PUCHAR;
typedef BYTE far * far * LPLPBYTE;
typedef struct tagResSectData { ULONG ulOffsetToResources; // File offset to the .rsrc
ULONG ulVirtualAddress; //... Virtual address of section .rsrc
ULONG ulSizeOfResources; //... Size of resources in section .rsrc
ULONG ulOffsetToResources1; // File offset to the .rsrc1
ULONG ulVirtualAddress1; //... Virtual address of section .rsrc1
ULONG ulSizeOfResources1; //... Size of resources in section .rsrc1
} RESSECTDATA, *PRESSECTDATA;
typedef struct ver_block { WORD wBlockLen; WORD wValueLen; WORD wType; WORD wHead; BYTE far * pValue; char szKey[100]; char szValue[256]; } VER_BLOCK;
VOID InitGlobals();
UINT GetNameOrOrdU( PUCHAR pRes, ULONG ulId, LPWSTR lpwszStrId, DWORD* pdwId );
UINT GetStringW( BYTE far * far* lplpBuf, LPSTR lpszText, LONG* pdwSize, WORD cLen ); UINT GetStringA( BYTE far * far* lplpBuf, LPSTR lpszText, LONG* pdwSize ); UINT GetPascalString( BYTE far * far* lplpBuf, LPSTR lpszText, WORD wMaxLen, LONG* pdwSize ); UINT GetMsgStr( BYTE far * far* lplpBuf, LPSTR lpszText, WORD wMaxLen, WORD* pwLen, WORD* pwFlags, LONG* pdwSize ); UINT PutMsgStr( BYTE far * far* lplpBuf, LPSTR lpszText, WORD wFlags, LONG* pdwSize );
// Simulate the WideChar to multibyte
extern UINT g_cp/* = CP_ACP*/; // Default to CP_ACP
extern BOOL g_bAppend/* = FALSE*/; //Default to FALSE
extern BOOL g_bUpdOtherResLang; /* = FALSE*/; //Default to FALSE
extern char g_char[2]/* = FALSE*/; //Default to FALSE
UINT _MBSTOWCS( WCHAR * pwszOut, CHAR * pszIn, UINT nLength); UINT _WCSTOMBS( CHAR * pszOut, WCHAR * wszIn, UINT nLength); UINT _WCSLEN( WCHAR * pwszIn );
BYTE PutDWord( BYTE far * far* lplpBuf, DWORD dwValue, LONG* pdwSize ); BYTE PutDWordPrt( BYTE far * far* lplpBuf, DWORD_PTR dwValue, LONG* pdwSize ); BYTE PutWord( BYTE far * far* lplpBuf, WORD wValue, LONG* pdwSize ); BYTE PutByte( BYTE far * far* lplpBuf, BYTE bValue, LONG* pdwSize ); UINT PutStringA( BYTE far * far* lplpBuf, LPSTR lpszText, LONG* pdwSize ); UINT PutStringW( BYTE far * far* lplpBuf, LPSTR lpszText, LONG* pdwSize ); UINT PutNameOrOrd( BYTE far * far* lplpBuf, WORD wOrd, LPSTR lpszText, LONG* pdwSize ); UINT PutCaptionOrOrd( BYTE far * far* lplpBuf, WORD wOrd, LPSTR lpszText, LONG* pdwSize, WORD wClass, DWORD dwStyle ); UINT PutClassName( BYTE far * far* lplpBuf, WORD bClass, LPSTR lpszText, LONG* pdwSize ); UINT PutPascalStringW( BYTE far * far* lplpBuf, LPSTR lpszText, WORD wLen, LONG* pdwSize ); UINT SkipByte( BYTE far * far * lplpBuf, UINT uiSkip, LONG* pdwRead ); BYTE GetDWord( BYTE far * far* lplpBuf, DWORD* dwValue, LONG* pdwSize ); BYTE GetWord( BYTE far * far* lplpBuf, WORD* wValue, LONG* pdwSize ); BYTE GetByte( BYTE far * far* lplpBuf, BYTE* bValue, LONG* pdwSize ); UINT GetNameOrOrd( BYTE far * far* lplpBuf, WORD* wOrd, LPSTR lpszText, LONG* pdwSize ); UINT GetCaptionOrOrd( BYTE far * far* lplpBuf, WORD* wOrd, LPSTR lpszText, LONG* pdwSize, WORD wClass, DWORD dwStyle ); UINT GetClassName( BYTE far * far* lplpBuf, WORD* bClass, LPSTR lpszText, LONG* pdwSize ); UINT GetVSBlock( BYTE far * far* lplpBuf, LONG* pdwSize, VER_BLOCK* pBlock ); UINT PutVSBlock( BYTE far * far * lplpImage, LONG* pdwSize, VER_BLOCK verBlock, LPSTR lpStr, BYTE far * far * lplpBlockSize, WORD wPad); UINT ParseMenu( LPVOID lpImageBuf, DWORD dwImageSize, LPVOID lpBuffer, DWORD dwSize ); UINT ParseString( LPVOID lpImageBuf, DWORD dwImageSize, LPVOID lpBuffer, DWORD dwSize ); UINT ParseDialog( LPVOID lpImageBuf, DWORD dwISize, LPVOID lpBuffer, DWORD dwSize ); UINT ParseMsgTbl( LPVOID lpImageBuf, DWORD dwISize, LPVOID lpBuffer, DWORD dwSize ); UINT ParseAccel( LPVOID lpImageBuf, DWORD dwImageSize, LPVOID lpBuffer, DWORD dwSize ); UINT ParseVerst( LPVOID lpImageBuf, DWORD dwImageSize, LPVOID lpBuffer, DWORD dwSize );
// These functions will take the image as is and will return just one item
// In this way the IODLL will assume there are items in the immage and will
// procede with the normal function.
UINT ParseEmbeddedFile( LPVOID lpImageBuf, DWORD dwImageSize, LPVOID lpBuffer, DWORD dwSize );
UINT UpdateMenu( LPVOID lpNewBuf, LONG dwNewSize, LPVOID lpOldImage, LONG dwOldImageSize, LPVOID lpNewImage, DWORD* pdwNewImageSize );
UINT UpdateMsgTbl( LPVOID lpNewBuf, LONG dwNewSize, LPVOID lpOldImage, LONG dwOldImageSize, LPVOID lpNewImage, DWORD* pdwNewImageSize );
UINT UpdateAccel( LPVOID lpNewBuf, LONG dwNewSize, LPVOID lpOldImage, LONG dwOldImageSize, LPVOID lpNewImage, DWORD* pdwNewImageSize );
UINT UpdateDialog( LPVOID lpNewBuf, LONG dwNewSize, LPVOID lpOldI, LONG dwOldImageSize, LPVOID lpNewI, DWORD* pdwNewImageSize );
UINT UpdateString( LPVOID lpNewBuf, LONG dwNewSize, LPVOID lpOldI, LONG dwOldImageSize, LPVOID lpNewI, DWORD* pdwNewImageSize );
UINT UpdateVerst( LPVOID lpNewBuf, LONG dwNewSize, LPVOID lpOldI, LONG dwOldImageSize, LPVOID lpNewI, DWORD* pdwNewImageSize );
UINT GenerateMenu( LPVOID lpNewBuf, LONG dwNewSize, LPVOID lpNewI, DWORD* pdwNewImageSize ); UINT GenerateDialog( LPVOID lpNewBuf, LONG dwNewSize, LPVOID lpNewI, DWORD* pdwNewImageSize ); UINT GenerateString( LPVOID lpNewBuf, LONG dwNewSize, LPVOID lpNewI, DWORD* pdwNewImageSize ); UINT GenerateAccel( LPVOID lpNewBuf, LONG dwNewSize, LPVOID lpNewI, DWORD* pdwNewImageSize );
UINT CopyFile( CFile* filein, CFile* fileout ); DWORD FixCheckSum( LPCSTR ImageName);
DWORD GenerateTransField( WORD wLang, BOOL bMode ); void GenerateTransField( WORD wLang, VER_BLOCK * pVer );
LONG Allign( LPLPBYTE lplpBuf, LONG* plBufSize, LONG lSize );
|