Global.cpp 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. #ifdef WIN32
  2. #include <Windows.h>
  3. #include <GdiPlus.h>
  4. #pragma comment( lib, "gdiplus.lib" )
  5. #include "Fenster.h"
  6. #include "Maus.h"
  7. #endif
  8. #define Global
  9. #include "Model3DList.h"
  10. #include "TexturList.h"
  11. #include "Globals.h"
  12. #include "Thread.h"
  13. #include "Datei.h"
  14. #include "Zeit.h"
  15. #include "DLLRegister.h"
  16. #include "Fenster.h"
  17. void Framework::initFramework(HINSTANCE__* hInst)
  18. {
  19. if (istInitialisiert)
  20. return;
  21. thRegister = new ThreadRegister();
  22. #ifdef WIN32
  23. Gdiplus::GdiplusStartupInput gdiplusStartupInput;
  24. ULONG_PTR gdiplusToken;
  25. Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, 0);
  26. msgExit = 0;
  27. MausTrack = 1;
  28. #endif
  29. for (int i = 0; i < 3; ++i)
  30. MausStand[i] = 0;
  31. TexturList::init();
  32. dlls = new DLLRegister();
  33. logEnabled = 0;
  34. logFile = 0;
  35. _hinst = hInst;
  36. istInitialisiert = 1;
  37. debugDX = 0;
  38. }
  39. void Framework::releaseFramework()
  40. {
  41. if (!istInitialisiert)
  42. return;
  43. thRegister->cleanUpClosedThreads();
  44. dlls->release();
  45. TexturList::destroy();
  46. if (logFile)
  47. logFile->release();
  48. delete thRegister;
  49. istInitialisiert = 0;
  50. }
  51. bool Framework::istThreadOk(Thread* t)
  52. {
  53. return thRegister->isThread(t);
  54. }
  55. // Gibt das Thread Register des Frameworks zurück
  56. Framework::ThreadRegister* Framework::getThreadRegister()
  57. {
  58. return thRegister;
  59. }
  60. #ifdef WIN32
  61. Framework::Punkt Framework::getMausPos()
  62. {
  63. POINT point;
  64. GetCursorPos(&point);
  65. return { point.x, point.y };
  66. }
  67. //! Setzt die Position der Maus auf dem Bildschirm
  68. void Framework::setMausPos(const Punkt& pos)
  69. {
  70. SetCursorPos(pos.x, pos.y);
  71. }
  72. #endif
  73. bool Framework::getMausStand(int taste)
  74. {
  75. return MausStand[taste];
  76. }
  77. bool Framework::getTastenStand(unsigned char taste)
  78. {
  79. #ifdef WIN32
  80. return GetKeyState(taste) & 0x8000;
  81. #else
  82. return 0;
  83. #endif
  84. }
  85. // Legt fest ob Log Nachrichten gespeichert werden sollen
  86. void Framework::setLogEnabled(bool le)
  87. {
  88. logEnabled = le;
  89. }
  90. // Speichert eine Zeile in die Logdatei
  91. // txt: die zu Speichernde Nachricht
  92. void Framework::logLine(char* txt)
  93. {
  94. if (logEnabled)
  95. {
  96. logC.lock();
  97. if (!logFile)
  98. {
  99. Zeit* z = getZeit();
  100. logFile = new Datei();
  101. logFile->setDatei(z->getZeit("y-m-d h-i-s.log"));
  102. logFile->erstellen();
  103. z->release();
  104. }
  105. logFile->open(Datei::Style::schreiben | Datei::Style::lesen | Datei::Style::ende);
  106. Uhrzeit* uz = getUhrzeit();
  107. Text* time = uz->getUhrzeit("h:i:s");
  108. time->append("_");
  109. time->append((int)GetThreadId(GetCurrentThread()));
  110. time->append(": ");
  111. logFile->schreibe(time->getText(), time->getLength());
  112. time->release();
  113. logFile->schreibe(txt, textLength(txt));
  114. logFile->schreibe("\n", 1);
  115. logFile->close();
  116. logC.unlock();
  117. }
  118. }
  119. // Gibt das DLL Register zurück, in dem alle zurzeit dynamisch geladenen DLL Dateien hinterlegt sind
  120. Framework::DLLRegister* Framework::getDLLRegister()
  121. {
  122. return Framework::dlls;
  123. }
  124. //! Versetzt DirectX in den Debug modus
  125. void Framework::setDebugDX(bool debug)
  126. {
  127. debugDX = debug;
  128. }
  129. #ifdef WIN32
  130. // gibt eine Referenz auf die Maus zurück
  131. Framework::Maus& Framework::getMaus()
  132. {
  133. return Framework::MausZeiger;
  134. }
  135. //! setzt den Zustand der Maus auf sichtbar oder unsichtbar
  136. void Framework::setShowCursor(bool visible)
  137. {
  138. CURSORINFO info = { 0 };
  139. info.cbSize = sizeof(CURSORINFO);
  140. GetCursorInfo(&info);
  141. if ((info.flags != 0) == (visible == 0))
  142. ShowCursor(visible);
  143. }
  144. #endif