Fenster.h 37 KB

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