Fenster.h 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590
  1. #ifndef Fenster_H
  2. #define Fenster_H
  3. #include "Zeichnung.h"
  4. #include "Array.h"
  5. namespace Framework
  6. {
  7. class VScrollBar; //! Scroll.h
  8. class HScrollBar; //! Scroll.h
  9. class TextFeld; //! TextFeld.h
  10. class Rahmen; //! Rahmen.h
  11. class Bildschirm; //! Bildschirm.h
  12. class AlphaFeld; //! AlphaFeld.h
  13. class Schrift; //! Schrift.h
  14. class Text; //! Text.h
  15. class Bild; //! Bild.h
  16. class WFenster; //! aus dieser Datei
  17. class WFensterArray; //! aus dieser Datei
  18. class Fenster; //! aus dieser Datei
  19. #ifdef WIN32
  20. //! Erzeugt eine normale Fensterklasse der Windows API
  21. //! \param hInst Die HINSTANCE des Programms (Wird vom Framework an die Start funktion in der Startparam Struktur übergeben)
  22. DLLEXPORT WNDCLASS F_Normal(HINSTANCE hInst);
  23. //! Erzeugt eine normale Fensterklasse der Windows API
  24. //! \param hInst Die HINSTANCE des Programms (Wird vom Framework an die Start funktion in der Startparam Struktur übergeben)
  25. DLLEXPORT WNDCLASSEX F_NormalEx(HINSTANCE hInst);
  26. //! Funktion des Frameworks, die alle Nachichten von Windows oder anderen Prozessen verarbeitet
  27. DLLEXPORT LRESULT CALLBACK WindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam);
  28. //! Startet eine Schleife, die die Benutzereingaben verarbeitet. Die Schleife läuft, bis irgendwo im Programm StopNachrichtenSchleife aufgerufen wird
  29. DLLEXPORT void StartNachrichtenSchleife();
  30. //! Stoppt die Ausführung der Nachrichten Schleife des Frameworks.
  31. //! \param hwnd Ein Handle auf ein beliebiges Fenster des Frameworks, das Nachrichten empfangen kann. Wird benötigt, um eine Nachricht zu senden, damit die funktion StartNachrichtenSchleife nicht mehr wartet und sofort beendet wird
  32. DLLEXPORT void StopNachrichtenSchleife(HWND hwnd);
  33. //! Übersetzt einen Keycode, der von Windows gesendet wurde in den Buchstaben der gedrückten Taste
  34. DLLEXPORT unsigned char VirtualZuChar(int Virtual);
  35. //! Klasse für ein Fenster der Windows API
  36. class WFenster : public virtual ReferenceCounter
  37. {
  38. private:
  39. HWND hWnd; //! Handel zum Fenster
  40. int style;
  41. void* makParam;
  42. void* sakParam;
  43. void* takParam;
  44. MausAktion mausAktion;
  45. std::function< void(void*, void*) > vCloseAktion;
  46. std::function< void(void*, void*) > nCloseAktion;
  47. TastaturAktion tastaturAktion;
  48. Bildschirm* screen;
  49. int mx, my;
  50. bool verschiebbar;
  51. HWND rahmen;
  52. HBITMAP bitmap;
  53. HDC hdc;
  54. public:
  55. //--Konstruktor--
  56. DLLEXPORT WFenster();
  57. //--Konstruktor--
  58. //! \param hwnd Ein Handle zum Fenster, das von dieser Klasse verwaltet werden soll
  59. DLLEXPORT WFenster(HWND hWnd);
  60. //--Destruktor--
  61. DLLEXPORT ~WFenster();
  62. //! erstellt das Fenster
  63. //! \param style Der Style des Fensters. Beispiel: WS_OVERLAPPEDWINDOW (Für ein normales Fenster wie man es kennt)
  64. //! \param wc Die Fensterklasse der Windows API, von der ein Fenster erstellt werden soll. Kann mit der Funktion F_Normal erstellt werden. Es muss lpszClassName gesetzt worden sein.
  65. DLLEXPORT void erstellen(int style, WNDCLASS wc);
  66. //! erstellt das Fenster
  67. //! \param exStyle Der EX Style des Fensters. Beispiel: WS_EX_OVERLAPPEDWINDOW (Für ein normales Fenster wie man es kennt)
  68. //! \param style Der Style des Fensters. Beispiel: WS_OVERLAPPEDWINDOW (Für ein normales Fenster wie man es kennt)
  69. //! \param wc Die Fensterklasse der Windows API, von der ein Fenster erstellt werden soll. Kann mit der Funktion F_Normal erstellt werden. Es muss lpszClassName gesetzt worden sein.
  70. DLLEXPORT void erstellenEx(int exStyle, int style, WNDCLASSEX wc);
  71. //! Setzt den Anzeigemodus des Fensters
  72. //! \param mod Der Modus. Beispiel: SW_SHOWNORMAL, um das Fenster anzuzeigen und SW_HIDE um es einzuklappen
  73. DLLEXPORT void setAnzeigeModus(int mod);
  74. //! Setzt den Fokus auf das Fenster, so dass Tastatureingaben empfangen werden
  75. DLLEXPORT bool setFokus();
  76. //! Setzt die Position des fensters auf dem Bildschirm
  77. //! \param pos Die Position in Pixeln
  78. DLLEXPORT void setPosition(Punkt& pos);
  79. //! Setzt die Position des fensters auf dem Bildschirm
  80. //! \param x Die X Position in Pixeln
  81. //! \param y Die Y Position in Pixeln
  82. DLLEXPORT void setPosition(int x, int y);
  83. //! Setzt die Größe des Fensters auf dem Bildschirm
  84. //! \param größe Die Größe in Pixeln
  85. DLLEXPORT void setSize(Punkt& größe);
  86. //! Setzt die Größe des Fensters auf dem Bildschirm
  87. //! \param breite Die Breite in Pixeln
  88. //! \param höhe Die Höhe in Pixeln
  89. DLLEXPORT void setSize(int breite, int höhe);
  90. //! Setzt die Position und die Größe des Fensters
  91. //! \param pos Die Position in Pixeln
  92. //! \param größe Die Größe in Pixeln
  93. DLLEXPORT void setBounds(Punkt& pos, Punkt& größe);
  94. //! Setzt das Verwendete Bildschirm Objekt, um Tastatur und Maus Eingaben an die Objekte des Frameworks weiterzugeben. Muss vor dem Zerstören des Fensters mit 0 aufgerufen werden.
  95. //! \param screen Das Bildschirm Objekt
  96. DLLEXPORT void setBildschirm(Bildschirm* screen);
  97. //! Zerstört das Fenster
  98. DLLEXPORT void zerstören();
  99. //! Verarbeitet Maus Nachrichten. Ruft MausAktion auf und gibt die Ereignisse an den Bildschirm mit den Objekten weiter, wenn MausAktion 1 zurückgibt
  100. //! \param me Das Ereignis, was durch die Mauseingabe ausgelößt wurde
  101. DLLEXPORT void doMausAktion(MausEreignis& me);
  102. //! Ruft die VSchließAktion Rückruffunktion auf
  103. DLLEXPORT void doVSchließAktion();
  104. //! Ruft die NSchließAktion Rückruffunktion auf
  105. DLLEXPORT void doNSchließAktion();
  106. //! Verarbeitet Tastatur Nachrichten. Ruft TastaturAktion auf und gibt die Ereignisse an den Bildschirm mit den Objekten weiter, wenn TastaturAktion 1 zurückgibt
  107. //! \param me Das Ereignis, was durch die Tastatureingabe ausgelößt wurde
  108. DLLEXPORT void doTastaturAktion(TastaturEreignis& et);
  109. //! Macht den Rahmen des Fensters sichtbar, fals ladeRahmenFenster aufgerufen wurde
  110. DLLEXPORT void doRestoreMessage();
  111. //! setzt den Parameter, der bei einem Maus Ereignis an die Rückruffunktion übergeben wird
  112. //! \param p Der Parameter
  113. DLLEXPORT void setMausEreignisParameter(void* p);
  114. //! setzt den Parameter, der beim Schließen an die Rückruffunktion übergeben wird
  115. //! \param p Der Parameter
  116. DLLEXPORT void setSchließEreignisParameter(void* p);
  117. //! Setzt den Parameter, der bei einem Tastatur Ereignis an die Rückruffunktion übergeben wird
  118. //! \param p Der Parameter
  119. DLLEXPORT void setTastaturEreignisParameter(void* p);
  120. //! Setzt die Rückruffunktion, die bei einem Maus Ereignis aufgerufen werden soll.
  121. //! Wenn die Rückruffunktion 0 zurückgiebt, oder nicht gesetzt wurde, wird ein Maus Ereignis von dem Fenster nicht weiter beachtet
  122. //! Es kann die Standartfunktion __ret1ME verwendet werden, die in MausEreignis.h definiert ist und immer 1 zurückgibt
  123. //! \param ak Ein Zeiger auf die Rückruffunktion
  124. DLLEXPORT void setMausAktion(MausAktion ak);
  125. //! Setzt die Rückruffunktion, die bei vor dem Schließen aufgerufen werden soll.
  126. //! \param ak Ein Zeiger auf die Rückruffunktion
  127. DLLEXPORT void setVSchließAktion(std::function< void(void*, void*) > ak);
  128. //! Setzt die Rückruffunktion, die bei nach dem Schließen aufgerufen werden soll.
  129. //! \param ak Ein Zeiger auf die Rückruffunktion
  130. DLLEXPORT void setNSchließAktion(std::function< void(void*, void*) > ak);
  131. //! Setzt die Rückruffunktion, die bei einem Tastatur Ereignis aufgerufen werdne soll.
  132. //! Wenn die Rückruffunktion 0 zurückgiebt, oder nicht gesetzt wurde, wird ein Tastatur Ereignis von der Zeichnung nicht weiter beachtet
  133. //! Es kann die Standartfunktion __ret1TE verwendet werden, die in TastaturEreignis.h definiert ist und immer 1 zurückgibt
  134. //! Weitere Standartfunktionen sind _nurNummernTE und _nurHexTE ebenfals aus TastaturEreignis.h
  135. //! \param ak Ein Zeiger auf die Rückruffunktion
  136. DLLEXPORT void setTastaturAktion(TastaturAktion ak);
  137. //! Setzt das Handle zum Fenster, das von dieser Klasse verwaltet werden soll
  138. //! \param hwnd Das Handle
  139. DLLEXPORT void setFensterHandle(HWND hWnd);
  140. //! legt fest, ob das Fenster durch ziehen mit Maus verschoben werden kann
  141. //! \param verschiebbar 1, wenn das Fenster verschoben werden darf
  142. DLLEXPORT void setVerschiebbar(bool verschiebbar);
  143. //! Setzt einen Transparenten Rahmen um das Fenster
  144. //! \param zBild Ein Bild, was den Rahmen enthält
  145. //! \param hins Die HINSTANCE des Programms (Wird vom Framework an die Start funktion in der Startparam Struktur übergeben)
  146. DLLEXPORT void ladeRahmenFenster(Bild* zBild, HINSTANCE hinst); //! setzt einen Transpatenten Rahmen um das Fenster
  147. //! Gibt das Handle des verwalteten Fensters zurück
  148. DLLEXPORT HWND getFensterHandle() const;
  149. //! Gibt die Position des Fensters in Pixeln zurück
  150. DLLEXPORT Punkt getPosition() const;
  151. //! Gibt die Größe des Fensters in Pixeln zurück
  152. DLLEXPORT Punkt getGröße() const;
  153. //! Gibt die Größe des Fensterkörpers in Pixeln zurück
  154. DLLEXPORT Punkt getKörperGröße() const;
  155. //! Gibt die Breite des Fensterkörpers in Pixeln zurück
  156. DLLEXPORT int getKörperBreite() const;
  157. //! Gibt die Höhe des Fensterkörpers in Pixeln zurück
  158. DLLEXPORT int getKörperHöhe() const;
  159. //! Gibt zurück, ob eine Rückruffunktion für ein MausEreignis gesetzt wurde
  160. DLLEXPORT bool hatMausAktion() const;
  161. //! Gibt zurück, ob eine Rückruffunktion für das Ereignis vor dem Schließen des Fensters gesetzt wurde
  162. DLLEXPORT bool hatVSchließAktion() const;
  163. //! Gibt zurück, ob eine Rückruffunktion für das Ereignis nach dem Schließen des Fensters gesetzt wurde
  164. DLLEXPORT bool hatNSchließAktion() const;
  165. //! Gibt zurück, ob eine Rückruffunktion für ein TastaturEreignis gesetzt wurde
  166. DLLEXPORT bool hatTastaturAktion() const;
  167. //! Gibt den Bidschirm zurück, an dessen Zeichnungen die Ereignisse Weitergegeben werden
  168. DLLEXPORT Bildschirm* getBildschirm() const;
  169. //! Gibt den Bildschirm ohne erhöhten Reference Counter zurück, an dessen Zeichnungen die Ereignisse Weitergegeben werden
  170. DLLEXPORT Bildschirm* zBildschirm() const;
  171. //! Gibt zurück, ob das Fenster verschiebbar ist
  172. DLLEXPORT bool istVerschiebbar() const;
  173. };
  174. //! Verwaltet alle Windows API Fenster im Framework
  175. class WFensterArray
  176. {
  177. private:
  178. WFensterArray* next;
  179. WFenster* This;
  180. public:
  181. //! Konstruktor
  182. DLLEXPORT WFensterArray();
  183. //! Destruktor
  184. DLLEXPORT ~WFensterArray();
  185. //! Fügt ein neues Fenster hinzu
  186. //! \param fenster Das Fenster
  187. DLLEXPORT bool addFenster(WFenster* fenster);
  188. //! Entfernt ein Fenster
  189. //! \param fenster Das Fenster
  190. DLLEXPORT bool removeFenster(WFenster* fenster);
  191. //! gibt das nächste Element zurück
  192. DLLEXPORT WFensterArray* getNext();
  193. //! Setzt das nächste Element auf 0
  194. DLLEXPORT void setNext0();
  195. //! Löscht das Element
  196. DLLEXPORT void del();
  197. //! Sendet das Ereignis, was vor dem Schließen aufgerufen wird an ein bestimmtes Fenster
  198. //! \param hWnd Das Handle zum Fenster
  199. DLLEXPORT bool sendVSchließMessage(HWND hWnd);
  200. //! Sendet das Ereignis, was nach dem Schließen aufgerufen wird an ein bestimmtes Fenster
  201. //! \param hWnd Das Handle zum Fenster
  202. DLLEXPORT bool sendNSchließMessage(HWND hwnd);
  203. //! Sendet ein Maus Ereignis an ein bestimmtes Fenster
  204. //! \param hWnd Das Handle zum Fenster
  205. //! \param me Das Ereignis, was durch die Mauseingabe ausgelößt wurde
  206. DLLEXPORT bool sendMausMessage(HWND hWnd, MausEreignis& me);
  207. //! Sendet ein Tastatur Ereignis an ein bestimmtes Fenster
  208. //! \param hWnd Das Handle zum Fenster
  209. //! \param me Das Ereignis, was durch die Tastatureingabe ausgelößt wurde
  210. DLLEXPORT bool sendTastaturMessage(HWND hwnd, TastaturEreignis& te);
  211. //! Sendet das Ereignis, was durch das öffnen des Fensters ausgelößt wurde an ein bestimmtes Fenster
  212. //! \param hWnd Das Handle zum Fenster
  213. DLLEXPORT bool sendRestoreMessage(HWND hwnd);
  214. //! Gibt das Fenster dieses Eintrags zurück
  215. DLLEXPORT WFenster* getThis();
  216. };
  217. //! Erzeugt ein Windows API Popup Fenster, mit einer Meldung
  218. //! \param hWnd Ein Handle zu dem Fenster, was blockiert werden soll, bis das Popup Fenster geschlossen wurde. Kann 0 sein
  219. //! \param titel Der Titel des Popup Fensters
  220. //! \param meldung Die Meldung, die im Fenster angezeigt werden soll
  221. //! \param style Bestimmt das Icon, was im Fenster angezeigt wird. Beispiel: MB_ICONERROR, MB_ICONINFORMATION
  222. DLLEXPORT void WMessageBox(HWND hWnd, Text* titel, Text* meldung, UINT style);
  223. #endif
  224. //! Fenster Klasse im Programm
  225. class Fenster : public Zeichnung
  226. {
  227. public:
  228. class Style : public Zeichnung::Style
  229. {
  230. public:
  231. const static __int64 BodyHintergrund = 0x000000008; //! Legt fest, ob der Körper des Fensters einen Hintergrund hat
  232. const static __int64 BodyHAlpha = 0x000000010; //! Legt fest, ob beim zeichnen des Körperhintergrundes alpha blending verwendet werden soll
  233. const static __int64 BodyHBild = 0x000000020; //! Legt fest, ob ein Bild als Hintergrund des Körpers verwendet werden soll
  234. const static __int64 BodyBuffered = 0x000000040; //! Legt fest, ob der Körper einen Farbübergang besitzt
  235. const static __int64 Titel = 0x000000080; //! Legt fest, ob das Fenster eine Titelleiste hat
  236. const static __int64 TitelHintergrund = 0x000000100; //! Legt fest, ob die titelleiste des Fensters einen Hintergrund hat
  237. const static __int64 TitelHAlpha = 0x000000200; //! Legt fest, ob zum zeichnen des Titel Hintergrundes alpha blending verwendet werden soll
  238. const static __int64 TitelHBild = 0x000000400; //! Legt fest, ob für den Titelhintergrund ein Bild verwendet werden soll
  239. const static __int64 TitelBuffered = 0x000000800; //! Legt fest, ob die Titel Leiste einen Farbübergang besitzt
  240. const static __int64 Closable = 0x000001000; //! Legt fest, ob in der Titelleiste ein Knopf zum Schließen des Fensters angezeigt werden soll
  241. const static __int64 ClosingHintergrund = 0x000002000; //! Legt fest, ob der Schließen Knopf einen Hintergrund hat
  242. const static __int64 ClosingHAlpha = 0x000004000; //! Legt fest, ob beim Zeichnen des Hintergrunds des Schließen Knopfes alpha blending verwendet werden soll
  243. const static __int64 ClosingHBild = 0x000008000; //! Legt fest, ob für den Hintergrund des Schließen Knopfes ein Bild verwendet werden soll
  244. const static __int64 ClosingBuffer = 0x000010000; //! Legt fest, ob der Schließen Knopf einen Farbübergang besitzt
  245. const static __int64 ClosingKlickBuffer = 0x000020000; //! Legt fest, ob der Schließen Knopf einen Farbübergang besitzt, während er gedrückt wird
  246. const static __int64 Beweglich = 0x000040000; //! Legt fest, ob der Benutzer das Fenster durch gedrückt halten der linken Maustaste in der Titelleiste das Fenster verschieben kann
  247. const static __int64 BreiteChangeable = 0x000080000; //! Legt fest, ob der Benutzer die Breite des Fensters durch das gedrückt halten der linken Maustaste auf dem rechten oder linken Fensterrand verändern kann
  248. const static __int64 HeightChangeable = 0x000100000; //! Legt fest, ob der Benutzer die Höhe des Fensters durch das gedrückt halten der linken Maustaste auf dem oberen oder unteren Fensterrand verändern kann
  249. const static __int64 TitelHeightChangeable = 0x000200000; //! Legt fest, ob der Benutzer die Höhe der Titel Leiste durch gedrückt halten der linken Maustaste auf dem unteren Rand der Titelleiste verändern kann
  250. const static __int64 MinBr = 0x000400000; //! Legt fest, ob es eine Minimale Breite des Fensters gibt
  251. const static __int64 MaxBr = 0x000800000; //! Legt fest, ob es eine Maximale Breite des Fensters gibt
  252. const static __int64 MinHi = 0x001000000; //! Legt fest, ob es eine Minimale Höhe des Fensters gibt
  253. const static __int64 MaxHi = 0x002000000; //! Legt fest, ob es eine Maximale Höhe des Fensters gibt
  254. const static __int64 BodyMinBr = 0x004000000; //! Legt fest, ob es eine Minimale Breite des Körpers gibt
  255. const static __int64 BodyMaxBr = 0x008000000; //! Legt fest, ob es eine Maximale Breite des Körpers gibt
  256. const static __int64 BodyMinHi = 0x010000000; //! Legt fest, ob es eine Minimale Höhe des Körpers gibt
  257. const static __int64 BodyMaxHi = 0x020000000; //! Legt fest, ob es eine Maximale Höhe des Körpers gibt
  258. const static __int64 VScroll = 0x040000000; //! Legt fest, ob eine ScrollBar am rechten Fensterrand erscheinen soll
  259. const static __int64 HScroll = 0x080000000; //! Legt fest, ob eine ScrollBar am unteren Fensterrand erscheinen soll
  260. const static __int64 METransparenz = 0x100000000; //! Legt fest, ob die Mausereignisse auch noch von Zeichnungen hinter dem Fenster verarbeitet werden sollen
  261. const static __int64 Rahmen = 0x200000000; //! Legt fest, ob das Fenster einen Rahmen haben soll
  262. const static __int64 min_max = MinHi | MaxHi | MaxBr | MaxHi; //! Vereint die Flags MinHö, MaxHö, MaxBr, MaxHö
  263. const static __int64 body_min_max = BodyMinBr | BodyMaxBr | BodyMinHi | BodyMaxBr; //! Vereint die Flags Körper_minBr, Körper_maxBr, Körper_minHö, Körper_maxBr
  264. const static __int64 scroll = VScroll | HScroll; //! Vereint die Flags VScroll, HScroll
  265. const static __int64 nichtfixiert = TitelHeightChangeable | HeightChangeable | BreiteChangeable | Beweglich; //! Vereint die Flags TitelHöheÄnderbar, HöheÄnderbar, BreiteÄnderbar, Beweglich
  266. const static __int64 normal = Sichtbar | Erlaubt | Rahmen | Titel | TitelBuffered | Closable | ClosingHBild | ClosingKlickBuffer | Beweglich | MEIgnoreVerarbeitet | MEIgnoreSichtbar | MEIgnoreParentInside | MEIgnoreInside; //! Vereint die Flags Sichtbar, Erlaubt, Rahmen, Titel, TitelBuffered, Schließbar, SchließHBild, SchließKlickBuffer, Beweglich
  267. };
  268. private:
  269. MausAktion closingMe;
  270. void* closingMeParam;
  271. Rahmen* rahmen;
  272. TextFeld* titel;
  273. RCArray<Zeichnung>* members;
  274. int bgBodyColor;
  275. Bild* bgBodyPicture;
  276. AlphaFeld* bodyBuffer;
  277. int bgClosingFarbe;
  278. Bild* bgClosingBild;
  279. AlphaFeld* closeBuffer;
  280. AlphaFeld* closeKlickBuffer;
  281. VScrollBar* vScroll;
  282. HScrollBar* hScroll;
  283. Punkt min, max;
  284. Punkt kMin, kMax;
  285. bool closeKlick, klick;
  286. int moving;
  287. int mx, my;
  288. protected:
  289. //! Verarbeitet Maus Nachrichten
  290. //! \param me Das Ereignis, was durch die Mauseingabe ausgelößt wurde
  291. DLLEXPORT void doMausEreignis(MausEreignis& me, bool userRet) override;
  292. public:
  293. //! Konstruktor
  294. DLLEXPORT Fenster();
  295. //! Destruktor
  296. DLLEXPORT virtual ~Fenster();
  297. //! Setzt einen Zeiger auf den Rahmen des Fensters
  298. //! \param ram Der Rahmen
  299. DLLEXPORT void setRahmenZ(Rahmen* ram);
  300. //! Setzt die Farbe des Fensterrahmens
  301. //! \param f Die Farbe im A8R8G8B8 Format
  302. DLLEXPORT void setRFarbe(int f);
  303. //! Setzt die Breite des Fensterrahmens
  304. //! \param br Die Breite in Pixeln
  305. DLLEXPORT void setRBreite(int br);
  306. //! Setzt den Titel des Fensters
  307. //! \param txt Der Text
  308. DLLEXPORT void setTitel(Text* txt);
  309. //! Setzt einen Zeiger auf den Titel Text
  310. //! \param txt Der neue Text
  311. DLLEXPORT void setTitelZ(Text* txt);
  312. //! Setzt den Titel des Fensters
  313. //! \param txt Der Textv
  314. DLLEXPORT void setTitel(const char* txt);
  315. //! Setzt einen Zeiger auf das TextFeld, das den Titeltext zeichnet
  316. //! \param tf Das TextFeld
  317. DLLEXPORT void setTTextFeldZ(TextFeld* tf);
  318. //! Setzt die Schrift, die für den Titel verwendet werden soll
  319. //! \param schrift Die Schrift
  320. DLLEXPORT void setTSchriftZ(Schrift* schrift);
  321. //! Setzt die Farbe der Schrift, die für den Titel verwendet werden soll
  322. //! \param f Die Farbe im A8R8G8B8 Format
  323. DLLEXPORT void setTSFarbe(int f);
  324. //! Setzt die Größe der Schrift, die für den Titel verwendet werden soll
  325. //! \param gr Die Höhe einer zeile in Pixeln
  326. DLLEXPORT void setTSSize(int gr);
  327. //! Setzt die Hintergrund Farbe des Titels
  328. //! \param f Die Farbe im A8R8G8B8 Format
  329. DLLEXPORT void setTBgFarbe(int f);
  330. //! Setzt einen Zeiger auf den Farbübergang des Titels
  331. //! \param af Der Farbübergang
  332. DLLEXPORT void setTAlphaFeldZ(AlphaFeld* af);
  333. //! Setzt die Farbe des Farbübergangs des Titels
  334. //! \param f Die Farbe im A8R8G8B8 Format
  335. DLLEXPORT void setTAfFarbe(int f);
  336. //! Setzt die Stärke des Farbübergangs des Titels
  337. //! \param st Die Stärke
  338. DLLEXPORT void setTAfStrength(int st);
  339. //! Setzt das Hintergrund Bild des Titels durch kopieren
  340. //! \param b Das Bild, was kopiert werden soll
  341. DLLEXPORT void setTBgBild(Bild* b);
  342. //! Setzt einen Zeiger auf das Hintergrund Bild des Titels
  343. //! \param b Das Bild
  344. DLLEXPORT void setTBgBildZ(Bild* b);
  345. //! Setzt einen Zeiger auf den Rahmen des Titels
  346. //! \param ram Der Rahmen
  347. DLLEXPORT void setTRahmenZ(Rahmen* ram);
  348. //! Setzt die Farbe des Rahmens des Titels
  349. //! \param f Die Farbe im A8R8G8B8 Format
  350. DLLEXPORT void setTRFarbe(int f);
  351. //! Setzt die Breite des Rahmens des Titels
  352. //! \param br Die Breite in Pixeln
  353. DLLEXPORT void setTRBreite(int br);
  354. //! Setzt die Hintergrundfarbe des Körpers
  355. //! \param f Die Farbe im A8R8G8B8 Format
  356. DLLEXPORT void setKBgFarbe(int f);
  357. //! Setzt das Hintergrund Bild des Körpers durch kopieren
  358. //! \param b Das Bild, das kopiert werden soll
  359. DLLEXPORT void setKBgBild(Bild* b);
  360. //! Setzt einen Zeiger auf das Hintergrund Bild des Körpers
  361. //! \param b Das Bild
  362. DLLEXPORT void setKBgBildZ(Bild* b);
  363. //! Setzt einen Zeiger auf den Farbübergang des Körpers
  364. //! \param af Der Farbübergang
  365. DLLEXPORT void setKAlphaFeldZ(AlphaFeld* af);
  366. //! Setzt die Farbe des Farbübergangs des Körpers
  367. //! \param f Die Farbe im A8R8G8B8 Format
  368. DLLEXPORT void setKAfFarbe(int f);
  369. //! Setzt die Stärke des Farbübergangs des Körpers
  370. //! \param st Die Stärke
  371. DLLEXPORT void setKAfStrength(int st);
  372. //! Setzt den Parameter der Rückruffunktion, die aufgerufen wird, wenn der Schließen Knopf ein MausEreignis erhält
  373. //! \param param Der Parameter
  374. DLLEXPORT void setClosingMeParam(void* param);
  375. //! Setzt die Rückruffunktion, die Aufgerufen wird, wenn der Schließen Knopf ein MausEreignis erhält
  376. //! Wenn die Rückruffunktion 0 zurückgiebt, oder nicht gesetzt wurde, wird ein Maus Ereignis von der Zeichnung nicht weiter beachtet
  377. //! Das Fenster wird nicht von selbst geschlossen, sondern sollte in der Rückruffunktion durch den aufruf von löscheStyle( Fenster::Style::Sichtbar ); geschlossen werden
  378. //! \param ak Ein Zeiger auf die Rückruffunktion
  379. DLLEXPORT void setClosingMe(MausAktion closingMe);
  380. //! Setzt die Hintergrund Farbe des Schließen Knopfes
  381. //! \param f Die Farbe im A8R8G8B8 Format
  382. DLLEXPORT void setSBgFarbe(int f);
  383. //! Setzt das Hintergrund Bild des Schließen Knopfes durch kopieren
  384. //! \param b Das Bild, das kopiert werden soll
  385. DLLEXPORT void setSBgBild(Bild* b);
  386. //! Setzt einen Zeiger auf das Hintergrund Bild des Schließen Knopfes
  387. //! \param b Das Bild
  388. DLLEXPORT void setSBgBildZ(Bild* b);
  389. //! Setzt einen Zeiger auf den Farbübergang des Schließen Knopfes
  390. //! \param af Der Farbübergang
  391. DLLEXPORT void setSAlphaFeldZ(AlphaFeld* af);
  392. //! Setzt die Farbe des Farbübergangs des Schließen Knopfes
  393. //! \param f Die Farbe im A8R8G8B8 Format
  394. DLLEXPORT void setSAfFarbe(int f);
  395. //! Setzt die Stärke des Farbübergangs des Schließen Knopfes
  396. //! \param st Die Stärke
  397. DLLEXPORT void setSAfStrength(int st);
  398. //! Setzt einen Zeiger auf den Farbübergang, der beim Klicken des Schließen Knopfes verwendet wird
  399. //! \param af Der Farbübergnag
  400. DLLEXPORT void setSKAlphaFeldZ(AlphaFeld* af);
  401. //! Setzt die Farbe des Farbübergangs, der beim Klicken des Schließen Knopfes verwendet wird
  402. //! \param f Die Farbe im A8R8G8B8 Format
  403. DLLEXPORT void setSKAfFarbe(int f);
  404. //! Setzt die Stärke des Farbübergangs, der beim Klicken des Schließen Knopfes verwendet wird
  405. //! \param st Die Stärke
  406. DLLEXPORT void setSKAfStrength(int st);
  407. //! Setzt die Minimale Größe des Fensters
  408. //! \param mx Die Minimale Breite in Pixeln
  409. //! \param my Die Minimale Höhe in Pixeln
  410. DLLEXPORT void setMin(int mx, int my);
  411. //! Setzt die Minimale Größe des Fensters
  412. //! \param min Die Minimale Breite und Höhe in Pixeln
  413. DLLEXPORT void setMin(const Punkt& min);
  414. //! Setzt die Maximale Größe des Fensters
  415. //! \param mx Die Maximale Breite in Pixeln
  416. //! \param my Die Maximale Höhe in Pixeln
  417. DLLEXPORT void setMax(int mx, int my);
  418. //! Setzt die Maximale Größe des Fensters
  419. //! \param min Die Maximale Breite und Höhe in Pixeln
  420. DLLEXPORT void setMax(const Punkt& max);
  421. //! Setzt die Minimale Größe des Fenster Körpers
  422. //! \param mx Die Minimale Breite in Pixeln
  423. //! \param my Die Minimale Höhe in Pixeln
  424. DLLEXPORT void setKMin(int mx, int my);
  425. //! Setzt die Minimale Größe des Fenster Körpers
  426. //! \param min Die Minimale Breite und Höhe in Pixeln
  427. DLLEXPORT void setKMin(const Punkt& min);
  428. //! Setzt die Maximale Größe des Fenster Körpers
  429. //! \param mx Die Maximale Breite in Pixeln
  430. //! \param my Die Maximale Höhe in Pixeln
  431. DLLEXPORT void setKMax(int mx, int my);
  432. //! Setzt die Maximale Größe des Fenster Körpers
  433. //! \param min Die Maximale Breite und Höhe in Pixeln
  434. DLLEXPORT void setKMax(const Punkt& max);
  435. //! Setzt einen Zeiger auf die Scrollbar am unteren Rand des Fensters
  436. //! \param hScroll Die Scrollbar
  437. DLLEXPORT void setHScrollBarZ(HScrollBar* hScroll);
  438. //! Setzt einen Zeiger auf die Scrollbar am rechten Rand des Fensters
  439. //! \param vScroll Die Scrollbar
  440. DLLEXPORT void setVScrollBarZ(VScrollBar* vScroll);
  441. //! Setzt die Maximale Scroll breite des Fenster Körpers
  442. //! \param max Die Breite in Pixeln
  443. DLLEXPORT void setHSBMax(int max);
  444. //! Setzt die Maximale Scroll höhe des Fenster Körpers
  445. //! \param max Die Höhe in Pixeln
  446. DLLEXPORT void setVSBMax(int max);
  447. //! Scrollt zu einer bestimmten x Position im Fenster Körper
  448. //! \param scroll Die Anzahl der Pixel, die der Inhalt nach links verschoben werden soll
  449. DLLEXPORT void setHSBScroll(int scroll);
  450. //! Scrollt zu einer bestimmten y Position im Fenster Körper
  451. //! \param scroll Die Anzahl der Pixel, die der Inhalt nach oben verschoben werden soll
  452. DLLEXPORT void setVSBScroll(int scroll);
  453. //! Fügt dem Fenster eine Zeichnung hinzu
  454. //! \param obj Die Zeichnung
  455. DLLEXPORT virtual void addMember(Zeichnung* obj);
  456. //! Entfernt eine Zeichnung aus dem Fenster
  457. //! \param zObj Die Zeichnung (ohne erhöhten reference Counter)
  458. DLLEXPORT virtual void removeMember(Zeichnung* zObj);
  459. //! Entfernt alle Zeichnungen aus dem Fenster
  460. DLLEXPORT virtual void removeAll();
  461. //! Aktualisiert das Objekt. Wird vom Framework aufgerufen
  462. //! \param tickVal Die Zeit in sekunden, die seit dem lezten Aufruf dieser Funktion vergangen ist
  463. //! \return 1, wenn sich etwas verändert hat und das Bild neu gezeichnet werden muss. 0 sonst
  464. DLLEXPORT bool tick(double tickval) override;
  465. //! Verarbeitet Tastatur Nachrichten
  466. //! \param me Das Ereignis, was durch die Tastatureingabe ausgelößt wurde
  467. DLLEXPORT void doTastaturEreignis(TastaturEreignis& te) override;
  468. //! Zeichnet das Fentster nach zRObj, falls es sichtbar ist
  469. //! \param zRObj Das Bild, in welches gezeichnet werden soll
  470. DLLEXPORT void render(Bild& zRObj) override;
  471. //! Gibt die Breite des Innenraumes in der Zeichnung in Pixeln zurück
  472. DLLEXPORT int getInnenBreite() const override;
  473. //! Gibt die Höhe des Innenraumes in der Zeichnung in Pixeln zurück
  474. DLLEXPORT int getInnenHeight() const override;
  475. //! Gibt den Rahmen des Fensters zurück
  476. DLLEXPORT Rahmen* getRahmen() const;
  477. //! Gibt den Rahmen des Fensters ohne erhöhen Reference Counter zurück
  478. DLLEXPORT Rahmen* zRahmen() const;
  479. //! Gibt die Farbe des Rahmens des Fensters im A8R8G8B8 Format zurück
  480. DLLEXPORT int getRFarbe() const;
  481. //! Gibt die Breite des Rahmens des Fensters in Pixeln zurück
  482. DLLEXPORT int getRBreite() const;
  483. //! Gibt den Titel des Fensters zurück
  484. DLLEXPORT Text* getTitel() const;
  485. //! Gibt den Titel des Fensters ohne erhöhten Reference Counter zurück
  486. DLLEXPORT Text* zTitel() const;
  487. //! Gibt das TextFeld zurück, das zum Zeichnen des Titels verwendet wird
  488. DLLEXPORT TextFeld* getTTextFeld() const;
  489. //! Gibt das TextFeld ohne erhöhten Reference Counter zurück, das zum Zeichnen des Titels verwendet wird
  490. DLLEXPORT TextFeld* zTTextFeld() const;
  491. //! Gibt die Schrift zurück, die für den Titel verwendet wird
  492. DLLEXPORT Schrift* getTSchrift() const;
  493. //! Gibt die Schrift ohne erhöten Reference Counter zurück, die für den Titel verwendet wird
  494. DLLEXPORT Schrift* zTSchrift() const;
  495. //! Gibt die Schrift Farbe des Titels im A8R8G8B8 Format zurück
  496. DLLEXPORT int getTSFarbe() const;
  497. //! Gibt die Höhe einer Zeile des Titels in Pixeln zurück
  498. DLLEXPORT int getTSSize() const;
  499. //! Gibt die Hintergrundfarbe des Titels im A8R8G8B8 Format zurück
  500. DLLEXPORT int getTBgFarbe() const;
  501. //! Gibt den Farbübergang des Titels zurück
  502. DLLEXPORT AlphaFeld* getTAlphaFeld() const;
  503. //! Gibt den Farbübergang des Titels ohne erhöhten Reference COunter zurück
  504. DLLEXPORT AlphaFeld* zTAlphaFeld() const;
  505. //! Gibt die Farbe des Farbübergangs des Titels im A8R8G8B8 Format zurück
  506. DLLEXPORT int getTAfFarbe() const;
  507. //! Gibt die Stärke des Farbübergangs des Titels zurück
  508. DLLEXPORT int getTAfStrength() const;
  509. //! Gibt das Hintergrund Bild des titels zurück
  510. DLLEXPORT Bild* getTBgBild() const;
  511. //! Gibt das Hintergrund Bild des titels ohne erhöhten Reference Counter zurück
  512. DLLEXPORT Bild* zTBgBild() const;
  513. //! Gibt den Rahmen des Titels zurück
  514. DLLEXPORT Rahmen* getTRahmen() const;
  515. //! Gibt den Rahmen des Titels ohne erhöhten Reference Counter zurück
  516. DLLEXPORT Rahmen* zTRahmen() const;
  517. //! Gibt die Farbe des Rahmens des Titels im A8R8G8B8 Format zurück
  518. DLLEXPORT int getTRFarbe() const;
  519. //! Gibt die Stärke des Rahmens des Titels zurück
  520. DLLEXPORT int getTRBreite() const;
  521. //! Gibt die Hintergrund Farbe des Körpers zurück
  522. DLLEXPORT int getKBgFarbe() const;
  523. //! Gibt das Hintergrund Bild des Körpers zurück
  524. DLLEXPORT Bild* getKBgBild() const;
  525. //! Gibt das Hintergrund Bild des Körpers ohne erhöhten Reference Counter zurück
  526. DLLEXPORT Bild* zKBgBild() const;
  527. //! Gibt den Farbübergang des Körpers zurück
  528. DLLEXPORT AlphaFeld* getKAlphaFeld() const;
  529. //! Gibt den Farbübergang des Körpers ohne erhöhten Reference Counter zurück
  530. DLLEXPORT AlphaFeld* zKAlphaFeld() const;
  531. //! Gibt die Farbe des Farbübergangs des Körpers im A8R8G8B8 Format zurück
  532. DLLEXPORT int getKAfFarbe() const;
  533. //! Gibt die Stärke des Farbübergangs des Körpers zurück
  534. DLLEXPORT int getKAfStrength() const;
  535. //! Gibt die Hintergrund Farbe des Schließen Knopfes im A8R8G8B8 Format zurück
  536. DLLEXPORT int getSBgFarbe() const;
  537. //! Gibt das Hintergrund Bild des Schließen Knopfes zurück
  538. DLLEXPORT Bild* getSBgBild() const;
  539. //! Gibt das Hintergrund Bild des Schließen Knopfes ohne erhöhten Reference COunter zurück
  540. DLLEXPORT Bild* zSBgBild() const;
  541. //! Gibt den Farbübergang des Schließen Knopfes zurück
  542. DLLEXPORT AlphaFeld* getSAlphaFeld() const;
  543. //! Gibt den Farbübergang des Schließen Knopfes ohne erhöhten Reference COunter zurück
  544. DLLEXPORT AlphaFeld* zSAlphaFeld() const;
  545. //! Gibt die Farbe des Farbübergangs des Schließen Knopfes im A8R8G8B8 Format zurück
  546. DLLEXPORT int getSAfFarbe() const;
  547. //! Gibt die Stärke des Farbübergangs des Schließen Knopfes zurück
  548. DLLEXPORT int getSAfStrength() const;
  549. //! Gibt den Farbübergang zurück, der verwendet wird, wenn auf den Schließen Knopf gedrückt wird
  550. DLLEXPORT AlphaFeld* getSKAlphaFeld() const;
  551. //! Gibt den Farbübergang ohne erhöhten Reference Counter zurück, der verwendet wird, wenn auf den Schließen Knopf gedrückt wird
  552. DLLEXPORT AlphaFeld* zSKAlphaFeld() const;
  553. //! Gibt die Farbe des Farbübergangs im A8R8G8B8 Format zurück, der verwendet wird, wenn auf den Schließen Knopf gedrückt wird
  554. DLLEXPORT int getSKAfFarbe() const;
  555. //! Gibt die Stärke des Farbübergangs zurück, der verwendet wird, wenn auf den Schließen Knopf gedrückt wird
  556. DLLEXPORT int getSKAfStrength() const;
  557. //! Gibt die minimale Fenstergröße in Pixeln zurück
  558. DLLEXPORT const Punkt& getMin() const;
  559. //! Gibt die maximale Fenstergröße in Pixeln zurück
  560. DLLEXPORT const Punkt& getMax() const;
  561. //! Gibt die minimale Körpergröße in Pixeln zurück
  562. DLLEXPORT const Punkt& getKMin() const;
  563. //! Gibt die maximale Körpergröße in Pixeln zurück
  564. DLLEXPORT const Punkt& getKMax() const;
  565. //! Gibt die Scrollbar vom rechten Fensterrand zurück
  566. DLLEXPORT VScrollBar* getVScrollBar() const;
  567. //! Gibt die Scrollbar vom rechten Fensterrand ohne erhöhten Reference Counter zurück
  568. DLLEXPORT VScrollBar* zVScrollBar() const;
  569. //! Gibt die Scrollbar vom unteren Fensterrand zurück
  570. DLLEXPORT HScrollBar* getHScrollBar() const;
  571. //! Gibt die Scrollbar vom unteren Fensterrand ohne erhöhten Reference Counter zurück
  572. DLLEXPORT HScrollBar* zHScrollBar() const;
  573. //! Gibt eine Liste mit Zeichnungen zurück, die im Fenster sind
  574. DLLEXPORT Iterator<Zeichnung*> getMembers() const;
  575. //! Erzeugt eine Kopie des Fensters, die ohne Auswirkungen auf das Original verändert werden kann
  576. DLLEXPORT Zeichnung* dublizieren() const override;
  577. };
  578. }
  579. #endif