Index: src/OFApplication.h ================================================================== --- src/OFApplication.h +++ src/OFApplication.h @@ -19,10 +19,14 @@ #include #import "OFObject.h" #import "OFNotification.h" + +#ifdef OF_WINDOWS +# include +#endif OF_ASSUME_NONNULL_BEGIN /** @file */ @@ -66,17 +70,43 @@ * [OFApplication terminate]; * } * @end * @endcode */ -#define OF_APPLICATION_DELEGATE(class_) \ +#ifndef OF_WINDOWS +# define OF_APPLICATION_DELEGATE(class_) \ int \ main(int argc, char *argv[]) \ { \ return OFApplicationMain(&argc, &argv, \ (class_ *)[[class_ alloc] init]); \ } +#else +# define OF_APPLICATION_DELEGATE(class_) \ + int \ + main(int argc, char *argv[]) \ + { \ + return OFApplicationMain(&argc, &argv, \ + (class_ *)[[class_ alloc] init]); \ + } \ + \ + WINAPI int \ + WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, \ + LPSTR lpCmdLine, int nShowCmd) \ + { \ + extern void __getmainargs(int *, char ***, char ***, \ + int, int *); \ + extern int _CRT_glob; \ + int argc = 0, si = 0; \ + char **argv = NULL, **envp = NULL; \ + \ + __getmainargs(&argc, &argv, &envp, _CRT_glob, &si); \ + \ + return OFApplicationMain(&argc, &argv, \ + (class_ *)[[class_ alloc] init]); \ + } +#endif #ifdef OF_HAVE_PLEDGE # define OF_HAVE_SANDBOX #endif Index: src/OFApplication.m ================================================================== --- src/OFApplication.m +++ src/OFApplication.m @@ -54,12 +54,10 @@ #if defined(OF_MACOS) # include #elif defined(OF_WINDOWS) # include -extern int _CRT_glob; -extern void __wgetmainargs(int *, wchar_t ***, wchar_t ***, int, int *); #elif defined(OF_AMIGAOS) # define Class IntuitionClass # include # include # undef Class @@ -125,10 +123,13 @@ app = [[OFApplication alloc] of_init]; #ifdef OF_WINDOWS if ([OFSystemInfo isWindowsNT]) { + extern void __wgetmainargs(int *, wchar_t ***, wchar_t ***, int, + int *); + extern int _CRT_glob; wchar_t **wargv, **wenvp; int wargc, si = 0; __wgetmainargs(&wargc, &wargv, &wenvp, _CRT_glob, &si);