1 //+---------------------------------------------------------------------------
3 // _UNICODE for tchar.h, UNICODE for API
9 #define __UNKNOWN_APP 0
10 #define __CONSOLE_APP 1
12 void __set_app_type(int);
13 void _controlfp(unsigned a
, unsigned b
);
16 #define __tgetmainargs __wgetmainargs
17 #define _twinstart _wwinstart
18 #define _runtwinmain _runwwinmain
19 int APIENTRY
wWinMain(HINSTANCE
, HINSTANCE
, LPWSTR
, int);
21 #define __tgetmainargs __getmainargs
22 #define _twinstart _winstart
23 #define _runtwinmain _runwinmain
29 } _startupinfo
; // CLI Vs GUI
31 int __cdecl
__tgetmainargs(int *pargc
, _TCHAR
***pargv
, _TCHAR
***penv
, int globb
, _startupinfo
*);
37 STARTUPINFO startinfo
;
41 __set_app_type(__GUI_APP
);
42 _controlfp(0x10000, 0x30000);
44 szCmd
= GetCommandLine();
46 while (__T(' ') == *szCmd
)
48 if (__T('\"') == *szCmd
) {
50 if (__T('\"') == *szCmd
) {
55 while (*szCmd
&& __T(' ') != *szCmd
)
58 while (__T(' ') == *szCmd
)
62 GetStartupInfo(&startinfo
);
63 fShow
= startinfo
.wShowWindow
;
64 if (0 == (startinfo
.dwFlags
& STARTF_USESHOWWINDOW
))
65 fShow
= SW_SHOWDEFAULT
;
67 ret
= _tWinMain(GetModuleHandle(NULL
), NULL
, szCmd
, fShow
);
71 int _runtwinmain(int argc
, /* as tcc passed in */ char **argv
)
77 _TCHAR
**wargv
, **wenv
;
78 _startupinfo start_info
= {0};
80 __tgetmainargs(&wargc
, &wargv
, &wenv
, 0, &start_info
);
82 wargv
+= wargc
- argc
;
91 szCmd
= _tcsstr(p
, argv
[1]);
94 else if (szCmd
> p
&& szCmd
[-1] == __T('\"'))
96 _controlfp(0x10000, 0x30000);
97 return _tWinMain(GetModuleHandle(NULL
), NULL
, szCmd
, SW_SHOWDEFAULT
);