Re: FRAGE: Arbeitsaufwand verwendung dll oder lib v(WIN) ?
Verfasst: 17.01.2026 11:43
Eine lib kann den Code beinhalten (Statik LIB) oder nur den verweis auf die Funktionen der DLL.
Das deutsche PureBasic-Forum
https://www.purebasic.fr/german/
Code: Alles auswählen
;- Top
; -----------------------------------------------------------------------------
; Name:
; Description:
; Author:
; Date: 2026-01-17
; Version:
; PB-Version:
; OS:
; Credit:
; Forum:
; Created by: csc
; -----------------------------------------------------------------------------
CompilerIf #PB_Compiler_IsMainFile
EnableExplicit
CompilerEndIf
;- Global
Global Window_0
Global MainMenu
Global ToolBar
Global StatusBar
Global Combo_1, Cont_1, ListIcon_1
Global File$
Global dat$
Global zeile$
; Save TXT File from ListIconGadget
Global LvInhaltSpeichern
Global pbnr
Global anzspalten
Global anzahlzeilen
Global j
Global k
#dnr2 = 1
#Gadget_1 = 0
#maxspalten = 6
;- Lade Bilder
UsePNGImageDecoder()
;- Declare
Declare Event_Cont_1()
Declare Menu_Window_0()
Declare ToolBar_Window_0()
Declare StatusBar_Window_0()
DataSection
ToolBarIcon_New: : IncludeBinary #PB_Compiler_Home + "examples/sources/Data/ToolBar/New.png"
ToolBarIcon_Open: : IncludeBinary #PB_Compiler_Home + "examples/sources/Data/ToolBar/Open.png"
ToolBarIcon_Save: : IncludeBinary #PB_Compiler_Home + "examples/sources/Data/ToolBar/Save.png"
ToolBarIcon_Properties: : IncludeBinary #PB_Compiler_Home + "examples/sources/Data/ToolBar/Properties.png"
ToolBarIcon_Help1: : IncludeBinary #PB_Compiler_Home + "examples/sources/Data/ToolBar/Help.png"
ToolBarIcon_Close: : IncludeBinary "icon\Icon 2\Log-Out-16x16x32.png"
EndDataSection
Procedure StatusBar_Window_0()
StatusBar = CreateStatusBar(#PB_Any, WindowID(Window_0))
If StatusBar
AddStatusBarField(120)
AddStatusBarField(150)
AddStatusBarField(#PB_Ignore)
StatusBarText(StatusBar, 0, "Statusleiste")
StatusBarText(StatusBar, 1, "Zentrum", #PB_StatusBar_BorderLess | #PB_StatusBar_Center)
StatusBarText(StatusBar, 2, "Rechts", #PB_StatusBar_Right | #PB_StatusBar_Raised)
EndIf
EndProcedure
Procedure LvInhaltSpeichern (dat$,pbnr,anzspalten)
anzahlzeilen = CountGadgetItems(pbnr)
If CreateFile(#dnr2, dat$)
For j = 1 To anzahlzeilen
zeile$ = ""
For k = 0 To #maxspalten
zeile$ + GetGadgetItemText(pbnr, j-1, k) + #LF$
Next
Debug zeile$
WriteStringN(#dnr2,zeile$)
Next
CloseFile(#dnr2)
EndIf
EndProcedure
Procedure Menu_Window_0()
MainMenu = CreateMenu(#PB_Any, WindowID(Window_0))
If MainMenu
MenuTitle("Datei")
MenuItem(1, "Öffnen...")
MenuItem(2, "Speichern")
MenuBar()
MenuItem(3, "&Beenden")
MenuTitle("?")
MenuItem(4, "Über")
EndIf
EndProcedure
Procedure ToolBar_Window_0()
Protected Image
ToolBar = CreateToolBar(#PB_Any, WindowID(Window_0), #PB_ToolBar_Large | #PB_ToolBar_Text)
If ToolBar
Image = CatchImage(#PB_Any, ?ToolBarIcon_Open)
ToolBarImageButton(1, ImageID(Image), #PB_ToolBar_Normal, "Öffnen...")
FreeImage(Image)
Image = CatchImage(#PB_Any, ?ToolBarIcon_Save)
ToolBarImageButton(2, ImageID(Image), #PB_ToolBar_Normal, "Speichern")
FreeImage(Image)
ToolBarSeparator()
Image = CatchImage(#PB_Any, ?ToolBarIcon_Close)
ToolBarImageButton(3, ImageID(Image), #PB_ToolBar_Normal, "Beenden...")
FreeImage(Image)
ToolBarSeparator()
EndIf
EndProcedure
Procedure Open_Window_0(X = 0, Y = 0, Width = 870, Height = 470)
Window_0 = OpenWindow(#PB_Any, X, Y, Width, Height, "Title", #PB_Window_SystemMenu | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
If Window_0
Menu_Window_0()
ToolBar_Window_0()
StatusBar_Window_0()
ListIcon_1 = ListIconGadget(#PB_Any, 0, 52, 870, 320, "Funktions Name", 120, #PB_ListIcon_CheckBoxes | #PB_ListIcon_ThreeState | #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect | #PB_ListIcon_HeaderDragDrop)
AddGadgetColumn(ListIcon_1, 1, "Parameter", 100)
AddGadgetColumn(ListIcon_1, 2, "Variable", 100)
AddGadgetColumn(ListIcon_1, 3, "Prozedur", 50)
AddGadgetColumn(ListIcon_1, 4, "Komentare", 50)
AddGadgetItem(ListIcon_1, -1, "ListIcon_1")
Cont_1 = ContainerGadget(#PB_Any, 0, 372, 870, 50, #PB_Container_Raised)
Combo_1 = ComboBoxGadget(#PB_Any, 0, 10, 170, 24)
AddGadgetItem(Combo_1, -1, "STDCALL")
AddGadgetItem(Combo_1, -1, "CDECL")
AddGadgetItem(Combo_1, -1, "FASTCALL")
SetGadgetState(Combo_1, 0)
CloseGadgetList() ; Cont_1
; CloseGadgetList() ; Cont_1
; BindGadgetEvent(Cont_1, @Event_Cont_1())
PostEvent(#PB_Event_SizeWindow, Window_0, 0)
ProcedureReturn #True
EndIf
EndProcedure
CompilerIf #PB_Compiler_IsMainFile
;- Hauptprogramm
If Open_Window_0()
;IceKeepEventLoop
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
;-> Event Menu
Case #PB_Event_Menu
Select EventMenu()
Case 1 ;Open
File$ = OpenFileRequester("Library - Open", "Pure.lib", "Library (*.lib)|*.lib", 0)
If File$+File$
MessageRequester("Information", "Selected File: "+File$, 0);
OpenLibrary(#PB_Any,"File$")
IsLibrary(#PB_Any)
ExamineLibraryFunctions(#PB_Any)
EndIf
Case 2 ;Save
dat$ = SaveFileRequester("Library Function - Save", "Pure.txt", "Library Funktion (*.txt)|*.txt", 0)
If dat$+dat$
MessageRequester("Information", "Selected File: "+dat$, 0);
LvInhaltSpeichern ("dat$", ListIcon_1, #maxspalten)
EndIf
Case 3 ;Quit
Break
Default
; MessageRequester("Information", "ToolBar oder Menu ID : " + Str(EventMenu()) +#CRLF$+#CRLF$+ "Text : " + GetMenuItemText(MainMenu, EventMenu()), 0)
EndSelect
;-> Event Gadget
Case #PB_Event_Gadget
Select EventGadget()
EndSelect
EndSelect
ForEver
;EndIceKeepEventLoop
EndIf
CompilerEndIf
CloseLibrary(#PB_All)
Code: Alles auswählen
; .....
File$ = OpenFileRequester("Library - Open", "Pure.lib", "Library (*.lib)|*.lib", 0)
If File$+File$
; .....
OpenLibrary(#PB_Any,"File$")
; .....
IsLibrary(#PB_Any)