Allgemeine Hinweise

Die Software ist im frühen Stadium. Die Verwendung erfolgt auf Eigenes Risiko. Ich übernehme keine Haftung.
Die Software ist Freeware
Es sind keine zusätzlichen DLL oder Laufzeitbibliotheken erforderlich.

Benutzung:

Der Ordner winFBGui enthält alle notwendigen Dateien, für jedes Control eine gleichen Namens. Zusammengefasst sind lediglich Basisdaten die vererbt werden und Objekte, die von mehreren Controls genutzt werden.
Dieser Ordner muss nach FreeBasic\inc\ kopiert werden. Mitenthalten ist auch winFBgui.bi. Sie sollte direckt FreeBasic\inc\ stehen. Alternativ kann diese Datei in den Projekt-Ordner kopiert werden. Hier kann nichtbenötigtes mit Hochkomma vom einbinden ausgeschlossen werden um die Größe der Exe zu reduzieren.
Die Programmdatei enthält dann als erste Zeile:
#Include "winFBgui.bi"

Speicher bereinigen:

In mehreren Objekten werden Handles z.B. von Brush oder HDC benötigt, die im Destructor gelöscht werden. Alle Kind-Ojekte die mit
Dim Shared as ... dimensioniert werden rufen des Destructor automatisch auf. Diejenigen die kein eigenes HWND haben wie FCanvas, FImage, FBitmap müssen am Ende den Destructor aufrufen. Das erfolgt entweder über Delete oder object.Destructor. Beispiel:

    ...
    form1.Show
    delete image1           ' Wenn Dim Shared as Fimage Ptr image1
    Canvas1.Destructor      ' Wenn Dim Shared as FCanvas Canvas1
    ExitProcess(0)          ' ExitProcess entfernt u.a. vom Programm geladene DLL
    end
    
Verwendung von Resource:

Eine Resource-Datei (.rc) muss zur Verwendung in diesen Control dieses Format haben:

    digit1 BITMAP DISCARDABLE "Digits.bmp"
    exit   BITMAP DISCARDABLE "exit.bmp"
    info   BITMAP DISCARDABLE "about.bmp"
    app    ICON   DISCARDABLE "app1.ico"
    

Die Funktionen zum laden von Resourcen verarbeiten nur Namen keine ID

 

Zwei Möglichkeiten die Objekte zu erstellen und zu benutzen :
      
    Dim Shared As FForm form1
    Dim Shared As FPanel panel1,panel2
    Dim Shared As FButton btn1,btn2
    '-------------------------------------------
    sub btn1_onClick
         ' OK wurde geklickt'
    end sub
    
    sub btn2_onClick
          form1.formClose
    end sub
    '-------------------------------------------
    form1.Create("Testform",0,0,870,720)
    Form1.Center
    Form1.Color = &Hefcb90
    
    panel1.Create(form1.Handle,100,40,860,550)
    panel1.Color = RGBA(150,180,210,0)
    
    panel2.Create(form1.Handle,0,690,866,22)
    panel2.Color = RGBA(210,210,210,0)
    
    btn1.Create(form1.Handle,"OK",5,160,90,36)
    btn1.Color = RGBA(150,180,210,0)
    btn1.onClick = @btn1_onClick
    
    btn2.Create(form1.Handle,"Abbruch",5,196,90,36)
    btn2.Color = RGBA(250,190,210,0)
    btn2.onClick = @btn2_onClick
    '-------------------------------------------
    ' Initialisierungen Var, array usw. hier
    '-------------------------------------------
    form1.Show
    ExitProcess(0)
    End
Dim Shared As FDialogBox PTR pDlgBox1
Dim Shared As FPanel PTR pDlgPanel1
Dim Shared As FButton PTR pDlgButton1
'-------------------------------------------
Sub Button_onClick
        pDlgBox1->Close(0)
End Sub

Sub dlg1_OnInitdialog(ByVal hWnd As HWND)
        ' alle Control müssen hier erstellt werden
        pDlgPanel1      = New FPanel
        pDlgButton1 = New FButton

        pDlgPanel1->Create(hWnd,10,10,276,140)
        pDlgPanel1->Caption =Chr(13,10)+ " Dialogbox mit FDialogBox "
        pDlgPanel1->Border=1
        pDlgPanel1->TextAlign=4 ' mehrzeilig mitte

        pDlgButton1->Create(hWnd,"OK",100,180,100,26)
        pDlgButton1->onClick = @Button_onClick
End Sub
'-------------------------------------------
' Das könnte das Event-Sub vom Menu sein
'-------------------------------------------
Sub menu_About
        Dim As Integer retVal
        pDlgBox1 = New FDialogBox
        pDlgBox1->Color = &Hefcb90
        pDlgBox1->OnInitdialog=@dlg1_OnInitdialog

        retVal = pDlgBox1->Create(Form1.Handle,"Info",300,250)

    ' Speicher bereinigen
        Delete pDlgPanel1
        Delete pDlgButton1
        Delete pDlgBox1  
End Sub

Diese Variante ist für Dialoge, die mehrmals zeitweilig aufgerufen werden, besser geeignet.