Browse Source

UI Dialog verbessert

Kolja Strohm 5 years ago
parent
commit
170ee63b75
4 changed files with 50 additions and 5 deletions
  1. 2 2
      DLLRegister.cpp
  2. 3 3
      Fenster.h
  3. 34 0
      UIDialog.cpp
  4. 11 0
      UIDialog.h

+ 2 - 2
DLLRegister.cpp

@@ -21,7 +21,7 @@ DLLRegister::~DLLRegister()
         if( tmp )
         {
             tmp->name->release();
-            FreeLibrary( tmp->handle );
+            //FreeLibrary( tmp->handle );
         }
         delete tmp;
     }
@@ -72,7 +72,7 @@ void DLLRegister::releaseDLL( char *name )
             if( !tmp->ref )
             {
                 tmp->name->release();
-                FreeLibrary( tmp->handle );
+                //FreeLibrary( tmp->handle );
                 delete tmp;
                 dlls->remove( i );
             }

+ 3 - 3
Fenster.h

@@ -461,12 +461,12 @@ namespace Framework
         __declspec( dllexport ) void setVSBScroll( int scroll );
         // Fügt dem Fenster eine Zeichnung hinzu
         //  obj: Die Zeichnung
-        __declspec( dllexport ) void addMember( Zeichnung *obj );
+        __declspec( dllexport ) virtual void addMember( Zeichnung *obj );
         // Entfernt eine Zeichnung aus dem Fenster
         //  zObj: Die Zeichnung (ohne erhöhten reference Counter)
-        __declspec( dllexport ) void removeMember( Zeichnung *zObj );
+        __declspec( dllexport ) virtual void removeMember( Zeichnung *zObj );
         // Entfernt alle Zeichnungen aus dem Fenster
-        __declspec( dllexport ) void removeAll();
+        __declspec( dllexport ) virtual void removeAll();
         // Aktualisiert das Objekt. Wird vom Framework aufgerufen
         //  tickVal: Die Zeit in sekunden, die seit dem lezten Aufruf dieser Funktion vergangen ist
         //  return: 1, wenn sich etwas verändert hat und das Bild neu gezeichnet werden muss. 0 sonst

+ 34 - 0
UIDialog.cpp

@@ -39,6 +39,40 @@ UIDialog::UIDialog( Schrift *schrift )
 UIDialog::~UIDialog()
 {}
 
+void UIDialog::adjustSize()
+{
+    Punkt max = Punkt( 0, 0 );
+    for( auto m = getMembers(); m; m++ )
+    {
+        max.x = MAX( max.x, m->getX() + m->getBreite() + 5 );
+        max.y = MAX( max.y, m->getY() + m->getHeight() + 5 );
+    }
+    setSize( max + Punkt( getRBreite() * 2, getRBreite() * 2 + zTTextFeld()->getHeight() ) );
+}
+
+// Fügt dem Fenster eine Zeichnung hinzu
+//  obj: Die Zeichnung
+void UIDialog::addMember( Zeichnung *obj )
+{
+    Fenster::addMember( obj );
+    adjustSize();
+}
+
+// Entfernt eine Zeichnung aus dem Fenster
+//  zObj: Die Zeichnung (ohne erhöhten reference Counter)
+void UIDialog::removeMember( Zeichnung *zObj )
+{
+    Fenster::removeMember( zObj );
+    adjustSize();
+}
+
+// Entfernt alle Zeichnungen aus dem Fenster
+void UIDialog::removeAll()
+{
+    Fenster::removeAll();
+    adjustSize();
+}
+
 
 UIMessageDialog::UIMessageDialog( const char *titel, const char *message, Schrift *schrift )
     : UIDialog( schrift )

+ 11 - 0
UIDialog.h

@@ -6,9 +6,20 @@ namespace Framework
 {
     class UIDialog : public Fenster
     {
+    protected:
+        __declspec( dllexport ) void adjustSize();
+
     public:
         __declspec( dllexport ) UIDialog( Schrift *schrift );
         __declspec( dllexport ) virtual ~UIDialog();
+        // Fügt dem Fenster eine Zeichnung hinzu
+        //  obj: Die Zeichnung
+        __declspec( dllexport ) virtual void addMember( Zeichnung *obj ) override;
+        // Entfernt eine Zeichnung aus dem Fenster
+        //  zObj: Die Zeichnung (ohne erhöhten reference Counter)
+        __declspec( dllexport ) virtual void removeMember( Zeichnung *zObj ) override;
+        // Entfernt alle Zeichnungen aus dem Fenster
+        __declspec( dllexport ) virtual void removeAll() override;
     };
 
     class UIMessageDialog : public UIDialog