qstartup.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /*
  2. * The MiniQt Library
  3. *
  4. * Copyright (C) 1999 Sandro Sigala <ssigala@globalnet.it>
  5. */
  6. #include <string.h>
  7. #include <windows.h>
  8. #include "qapplication.h"
  9. HINSTANCE hInstance; // Used outside for CreateWindow() calls
  10. int qmain(int argc, char **argv);
  11. #define MAX_ARGUMENTS 128
  12. static void unpack_lpCmdLine(const char *s, int& argc, char *argv[])
  13. {
  14. int argno = 0, argidx = 0;
  15. for (; *s != '\0'; ++s) {
  16. if (*s == ' ') {
  17. while (*s == ' ')
  18. ++s;
  19. if (*s == '\0')
  20. break;
  21. ++argno;
  22. argidx = 0;
  23. }
  24. if (argidx == 0) {
  25. // Allocate a new argument
  26. argv[argno] = new char[strlen(s) + 1];
  27. memset(argv[argno], 0, strlen(s) + 1);
  28. ++argc;
  29. }
  30. argv[argno][argidx++] = *s;
  31. }
  32. argv[argc] = 0;
  33. }
  34. int WinMain(HINSTANCE hInst, HINSTANCE /*hPrevInstance*/, LPSTR lpCmdLine, int /*nShowCmd*/)
  35. {
  36. #ifdef DEBUG
  37. qDebugSetTypes(4, "startup", "obj", "moc", "wid");
  38. #endif
  39. hInstance = hInst;
  40. #ifdef DEBUG
  41. qDebug("startup", "command line: \"%s\"", lpCmdLine);
  42. #endif
  43. int argc = 1;
  44. char *argv[MAX_ARGUMENTS];
  45. argv[0] = "appname"; // XXX
  46. unpack_lpCmdLine(lpCmdLine, argc, &argv[1]);
  47. #ifdef DEBUG
  48. for (int i = 0; i < argc; ++i)
  49. qDebug("startup", "argv[%d]: \"%s\"", i, argv[i]);
  50. #endif
  51. int retvalue = qmain(argc, argv);
  52. for (int i = 1; i < argc; ++i)
  53. delete [] argv[i];
  54. return retvalue;
  55. }