Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. //+---------------------------------------------------------------------------
  2.  
  3. #include <windows.h>
  4. #include <stdlib.h>
  5.  
  6. #define __UNKNOWN_APP    0
  7. #define __CONSOLE_APP    1
  8. #define __GUI_APP        2
  9. void __set_app_type(int);
  10. void _controlfp(unsigned a, unsigned b);
  11.  
  12. #ifndef __TRY__
  13.     #ifdef _WIN64
  14.         #define __TRY__
  15.     #else
  16.         #define __TRY__ void __try__(void**), *_sehrec[6]; __try__(_sehrec);
  17.     #endif
  18. #endif
  19.  
  20. int _winstart(void)
  21. {
  22.     __TRY__
  23.     char *szCmd;
  24.     STARTUPINFO startinfo;
  25.     int fShow;
  26.     int ret;
  27.  
  28.     __set_app_type(__GUI_APP);
  29.     _controlfp(0x10000, 0x30000);
  30.  
  31.     szCmd = GetCommandLine();
  32.     if (szCmd) {
  33.         while (' ' == *szCmd)
  34.             szCmd++;
  35.         if ('\"' == *szCmd) {
  36.             while (*++szCmd)
  37.                 if ('\"' == *szCmd) {
  38.                     szCmd++;
  39.                     break;
  40.                 }
  41.         } else {
  42.             while (*szCmd && ' ' != *szCmd)
  43.                 szCmd++;
  44.         }
  45.         while (' ' == *szCmd)
  46.             szCmd++;
  47.     }
  48.  
  49.     GetStartupInfo(&startinfo);
  50.     fShow = startinfo.wShowWindow;
  51.     if (0 == (startinfo.dwFlags & STARTF_USESHOWWINDOW))
  52.         fShow = SW_SHOWDEFAULT;
  53.  
  54.     ret = WinMain(GetModuleHandle(NULL), NULL, szCmd, fShow);
  55.     exit(ret);
  56. }
  57.  
  58. int _runwinmain(int argc, char **argv)
  59. {
  60.     char *szCmd, *p;
  61.  
  62.     p = GetCommandLine();
  63.     szCmd = NULL;
  64.     if (argc > 1)
  65.         szCmd = strstr(p, argv[1]);
  66.     if (NULL == szCmd)
  67.         szCmd = "";
  68.     else if (szCmd > p && szCmd[-1] == '\"')
  69.         --szCmd;
  70.     _controlfp(0x10000, 0x30000);
  71.     return WinMain(GetModuleHandle(NULL), NULL, szCmd, SW_SHOWDEFAULT);
  72. }
  73.