Fenster.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. #ifndef Fenster_H
  2. #define Fenster_H
  3. #include "Objekt.h"
  4. #include <Windows.h>
  5. namespace Framework
  6. {
  7. class Farbe; // farbe.h
  8. class TextFeld; // TextFeld.h
  9. class LRahmen; // Rahmen.h
  10. class Bildschirm; // Bildschirm.h
  11. class Schrift; // Schrift.h
  12. class Text; // Text.h
  13. class Punkt; // Punkt.h
  14. class Bild; // Bild.h
  15. class WFenster; // aus dieser Datei
  16. class WFensterArray; // aus dieser Datei
  17. // Erzeugen einer normalen Fensterklasse
  18. WNDCLASS F_Normal( HINSTANCE hInst );
  19. WNDCLASSEX F_NormalEx( HINSTANCE hInst );
  20. LRESULT CALLBACK WindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam);
  21. // Startet eine Schleife, die die Benutzereingaben verarbeitet. Die Schleife läuft, bis irgendwo im Programm StopNachrichtenSchleife aufgerufen wird
  22. __declspec( dllexport ) void StartNachrichtenSchleife();
  23. // Stoppt die Ausführung der Nachrichten Schleife des Frameworks.
  24. // 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
  25. __declspec( dllexport ) void StopNachrichtenSchleife( HWND hwnd );
  26. unsigned char VirtualZuChar( int Virtual );
  27. // Klasse für ein Fenster in Windows
  28. class WFenster
  29. {
  30. private:
  31. HWND hWnd; // Handel zum Fenster
  32. int style;
  33. bool (*MausAktion)( WFenster *, MausEreignis );
  34. void (*VSchließAktion)( WFenster * );
  35. void (*NSchließAktion)( WFenster * );
  36. bool (*TastaturAktion)( WFenster *, TastaturEreignis );
  37. Bildschirm *screen;
  38. int mx, my;
  39. bool verschiebbar;
  40. int ref;
  41. HWND rahmen;
  42. HBITMAP bitmap;
  43. HDC hdc;
  44. public:
  45. //--Konstruktor--
  46. WFenster();
  47. WFenster( HWND hWnd );
  48. //--Destruktor--
  49. ~WFenster();
  50. // nicht constant
  51. void erstellen( int style, WNDCLASS wc ); // Das Fenster Erstellen
  52. void erstellenEx( int exStyle, int style, WNDCLASSEX wc ); // Das Fenster Erstellen
  53. void setAnzeigeModus( int mod ); // Zeigt das Fenster im übergebenen Modus an
  54. void setPosition( Punkt *pos ); // Bildschirmposition des Fensters setzen
  55. void setPosition( int x, int y );
  56. void setGröße( Punkt *größe ); // Die größe des Fensters setzen
  57. void setGröße( int breite, int höhe );
  58. void setBounds( Punkt *pos, Punkt *größe ); // Größe und Porition in einem
  59. void setBildschirm( Bildschirm *screen );
  60. void zerstören(); // Zerstört das Fenster
  61. void doMausAktion( MausEreignis *me ); // ruft MausAktion auf
  62. void doVSchließAktion(); // ruft VSchließAktion auf
  63. void doNSchließAktion(); // ruft NSchließAktion auf
  64. void doTastaturAktion( TastaturEreignis *et ); // ruft TastaturAktion auf
  65. void doRestoreMessage(); // macht den Rahmen sichtbar
  66. void setMausAktion( bool (*MausAk)( WFenster *, MausEreignis ) ); // setzt das MausEreignis
  67. void setVSchließAktion( void (*vSchließAk)( WFenster * ) ); // setzt v schließ Aktion
  68. void setNSchließAktion( void (*nSchließAk)( WFenster * ) ); // setzt n schließ Aktion
  69. void setTastaturAktion( bool (*TastaturAk)( WFenster *, TastaturEreignis ) ); // setzt das TastaturEreignis
  70. void setFensterHandle( HWND hWnd ); // setzt das operationsfenster
  71. void setVerschiebbar( bool verschiebbar ); // legt fest, ob das Fenster durch ziehen mit Maus verschoben werden kann
  72. void ladeRahmenFenster( Bild *zBild, HINSTANCE hinst ); // setzt einen Transpatenten Rahmen um das Fenster
  73. // constant
  74. HWND getFensterHandle() const; // gibt das Fenster Handle zurück
  75. Punkt *getPosition() const; // gibt die Fensterposition zurück
  76. Punkt *getGröße() const; // gibt die Fenstergröße zurück
  77. bool hatMausAktion() const; // Prüft, ob eine Aktion bei MausEreignis festgelegt wurde
  78. bool hatVSchließAktion() const; // Prüft, ob eine Aktion vor Fensterschließen festgelegt wurde
  79. bool hatNSchließAktion() const; // Prüft, ob eine Aktion nach Fensterschließen festgelegt wurde
  80. bool hatTastaturAktion() const; // Prüft, ob eine Aktion bei TastaturEreignis festgelegt wurde
  81. Bildschirm *getBildschirm() const;
  82. Bildschirm *zBildschirm() const;
  83. bool istVerschiebbar() const; // prüft, ob das Fenster durch ziehen mit Maus verschoben werden kann
  84. // Reference Counting
  85. WFenster *getThis();
  86. WFenster *release();
  87. };
  88. // Verwaltung der WFenster im Framework
  89. class WFensterArray
  90. {
  91. private:
  92. WFensterArray *next;
  93. WFenster *This;
  94. public:
  95. // Konstruktor
  96. WFensterArray();
  97. // Destruktor
  98. ~WFensterArray();
  99. // add und remove
  100. bool addFenster( WFenster *fenster );
  101. bool removeFenster( WFenster *fenster );
  102. WFensterArray* getNext();
  103. void setNext0();
  104. void del();
  105. // Messages
  106. bool sendVSchließMessage( HWND hWnd );
  107. bool sendNSchließMessage( HWND hwnd );
  108. bool sendMausMessage( HWND hWnd, MausEreignis *me );
  109. bool sendTastaturMessage( HWND hwnd, TastaturEreignis *te );
  110. bool sendRestoreMessage( HWND hwnd );
  111. WFenster *getThis();
  112. };
  113. // WMessageBox
  114. void WMessageBox( HWND hWnd, Text *titel, Text *meldung, UINT style );
  115. }
  116. #endif