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.
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"
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
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
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. |