Release 971012
[wine/multimedia.git] / library / winestub.c
blob39946b3962df37fda53a1d91a12c688859833ff2
1 /* Sample winestub.c file for compiling programs with libwine.so. */
3 #include <string.h>
4 #include "windows.h"
5 #include "xmalloc.h"
7 extern int PASCAL WinMain(HINSTANCE32,HINSTANCE32,LPSTR,int);
8 extern int MAIN_Init(void);
9 extern BOOL32 MAIN_WineInit( int *argc, char *argv[] );
10 extern void TASK_Reschedule(void);
12 /* Most Windows C/C++ compilers use something like this to */
13 /* access argc and argv globally: */
14 int _ARGC;
15 char **_ARGV;
17 int main( int argc, char *argv [] )
19 HINSTANCE16 hInstance;
20 LPSTR lpszCmdParam;
21 int i, len = 0;
22 _ARGC = argc;
23 _ARGV = (char **)argv;
25 MAIN_WineInit( &argc, argv );
27 /* Alloc szCmdParam */
28 for (i = 1; i < argc; i++) len += strlen(argv[i]) + 1;
29 lpszCmdParam = (LPSTR) xmalloc(len + 1);
30 /* Concatenate arguments */
31 if (argc > 1) strcpy(lpszCmdParam, argv[1]);
32 else lpszCmdParam[0] = '\0';
33 for (i = 2; i < argc; i++) strcat(strcat(lpszCmdParam, " "), argv[i]);
35 if(!MAIN_Init()) return 0; /* JBP: Needed for DosDrives[] structure, etc. */
36 hInstance = WinExec32( *argv, SW_SHOWNORMAL );
37 TASK_Reschedule();
38 InitApp( hInstance );
40 return WinMain (hInstance, /* hInstance */
41 0, /* hPrevInstance */
42 lpszCmdParam, /* lpszCmdParam */
43 SW_NORMAL); /* nCmdShow */