/****************************************************************************/ /* */ /* RCDLL.C - */ /* */ /* Windows 3.5 Resource Compiler - Main Module */ /* */ /* */ /****************************************************************************/ #include "rc.h" #include /* Module handle */ HINSTANCE hInstance; HWND hWndCaller; RC_MESSAGE_CALLBACK lpfnMessageCallback; RC_PARSE_CALLBACK lpfnParseCallback; /* Function prototypes */ int __cdecl rc_main(int, char**); int __cdecl rcpp_main(int argc, PWCHAR*argv); #ifdef __cplusplus extern "C" #endif BOOL WINAPI DllMain( HINSTANCE hDll, DWORD dwReason, LPVOID lpReserved ) { if (dwReason == DLL_PROCESS_ATTACH) { hInstance = hDll; DisableThreadLibraryCalls(hDll); } return TRUE; } #ifdef __cplusplus extern "C" #endif int CALLBACK RC( HWND hWnd, int fStatus, RC_MESSAGE_CALLBACK lpfnMsg, RC_PARSE_CALLBACK lpfnParse, int argc, char**argv ) { hWndCaller = hWnd; lpfnMessageCallback = lpfnMsg; lpfnParseCallback = lpfnParse; return (rc_main(argc, argv)); } int RCPP( int argc, PCHAR *argv, PCHAR env ) { WCHAR **wargv; wargv = UnicodeCommandLine(argc, argv); return rcpp_main(argc, wargv); } void SendWarning( PSTR str ) { if (lpfnMessageCallback) (*lpfnMessageCallback)(0, 0, str); if (hWndCaller) { if (SendMessageA(hWndCaller, WM_RC_ERROR, FALSE, (LPARAM)str) != 0) { quit("\n"); } } } void SendError( PSTR str ) { static int cErrThisLine = 0; static int LastRow = 0; if (lpfnMessageCallback) (*lpfnMessageCallback)(0, 0, str); if (hWndCaller) { if (SendMessageA(hWndCaller, WM_RC_ERROR, FALSE, (LPARAM)str) != 0) { quit("\n"); } } if (token.row == LastRow) { if (++cErrThisLine > 4 && strcmp(str, "\n")) quit("\n"); } else { LastRow = token.row; cErrThisLine = 0; } } void UpdateStatus( unsigned nCode, unsigned long dwStatus ) { if (hWndCaller) { if (SendMessageA(hWndCaller, WM_RC_STATUS, nCode, dwStatus) != 0) { quit("\n"); } } }