[Fixed] PB 4.51 x86 - Toolbarfunktionen

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

[Fixed] PB 4.51 x86 - Toolbarfunktionen

Beitrag von Bisonte »

Hallo.

Ich habe ein merkwürdiges Phänomen, das ich durchaus als Bug bezeichnen möchte.

Wenn man in PB4.51 eine Toolbarfunktion aufruft, ohne das irgendwo im restlichen Source
ein OpenWindow() kommt, gibt der Compiler einen

POLINK:error: Unresolved external symbol '_PB_Image_GETDIBPitch.'
POLINK:fatal error: 1 unresolved external(s)

aus.

Ich war grade dabei mir aus den RSBasic WinApi Snippets, eine Procedure zu basteln.

Code: Alles auswählen

Procedure.i SetToolBarButtonSize(ToolBar.i, Size.i)
  
  Protected TBID
  
  If IsToolBar(ToolBar)
    TBID = SendMessage_(ToolBarID(ToolBar),#TB_GETIMAGELIST,0,0)
    ImageList_SetIconSize_(TBID,Size,Size)
    SendMessage_(ToolBarID(ToolBar),#TB_SETIMAGELIST,0,TBID)
    SendMessage_(ToolBarID(ToolBar),#TB_AUTOSIZE,0,0)
  EndIf

EndProcedure

; If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
;   
; 
Hier erscheint bei mir dieser besagte Fehler, wenn ich das Openwindow wieder aktiviere, gibt es den Fehler nicht.
(Hab das auch auf WinXP getestet, mit frisch installiertem PB4.51)

Auch ein ganz banales IsToolBar() allein im Quellcode löst diesen Fehler aus.
Kann das jemand bestätigen ?
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: PB 4.51 x86 - Toolbarfunktionen

Beitrag von ts-soft »

Tritt in PB4.60 b3 nicht mehr auf, somit also bereits gefixed.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: PB 4.51 x86 - Toolbarfunktionen

Beitrag von Bisonte »

Ok. Dann bin ich beruhigt ;)

Edit : aber bis die final erscheint, wende ich dann das ganze so an :

Code: Alles auswählen

Procedure.i SetToolBarButtonSize(hToolBar.i, Size.i)
  
  Protected TBID
  
  If hToolBar
    TBID = SendMessage_(hToolBar,#TB_GETIMAGELIST,0,0)
    ImageList_SetIconSize_(TBID,Size,Size)
    SendMessage_(hToolBar,#TB_SETIMAGELIST,0,TBID)
    SendMessage_(hToolBar,#TB_AUTOSIZE,0,0)
  EndIf

EndProcedure
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: [Fixed] PB 4.51 x86 - Toolbarfunktionen

Beitrag von ts-soft »

Als workaround würde auch dies gehen:

Code: Alles auswählen

Procedure.i SetToolBarButtonSize(ToolBar.i, Size.i)
 
  Protected TBID
 
  If IsToolBar(ToolBar)
    TBID = SendMessage_(ToolBarID(ToolBar),#TB_GETIMAGELIST,0,0)
    ImageList_SetIconSize_(TBID,Size,Size)
    SendMessage_(ToolBarID(ToolBar),#TB_SETIMAGELIST,0,TBID)
    SendMessage_(ToolBarID(ToolBar),#TB_AUTOSIZE,0,0)
  EndIf
  ProcedureReturn 
  OpenWindow(-1, 0, 0, 0, 0, "")
EndProcedure
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: [Fixed] PB 4.51 x86 - Toolbarfunktionen

Beitrag von Bisonte »

Das gefällt mir ;)

Dann muss man nicht immer als Parameter ToolBarID() benutzen ;)

Aber sind das Fenster und dessen Ressourcen sofort wieder freigegeben,
oder sollte man da noch ein CloseWindow() dranhängen ?
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: [Fixed] PB 4.51 x86 - Toolbarfunktionen

Beitrag von ts-soft »

Bisonte hat geschrieben:Aber sind das Fenster und dessen Ressourcen sofort wieder freigegeben,
oder sollte man da noch ein CloseWindow() dranhängen ?
Nein, der Code wird niemals ausgeführt, lediglich der Compiler bemerkt, das es ein Fenster "gibt",
und initialisiert alles für Menu und Toolbar.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten