Seite 2 von 2

Verfasst: 15.05.2007 09:29
von Shardik
Hier ist ein in PB 4 funktionierendes Beispiel mit Icons im Format 32 x 32 Pixeln (ein interessantes Beispiel für PB 3 mit aus dem WingDings-Zeichensatz erstellten Schaltflächen hat Sparky im englischen Forum veröffentlicht: http://www.purebasic.fr/english/viewtop ... 06&start=3)

Code: Alles auswählen

#TB_SETIMAGELIST = #WM_USER + 48 
#TB_GETIMAGELIST = #WM_USER + 49 

Procedure MakeLong(LowWord.W, HighWord.W) 
  ProcedureReturn (HighWord * $10000) | (LowWord & $FFFF) 
EndProcedure 

If OpenWindow(0, 0, 0, 250, 100, "Große Toolbar-Schaltflächen", #PB_Window_SystemMenu |#PB_Window_SizeGadget | #PB_Window_ScreenCentered) 
  hTB = CreateToolBar(0, WindowID(0)) 
  hOldIList = SendMessage_(hTB, #TB_GETIMAGELIST, 0, 0); 
  hNewIList = ImageList_Duplicate_(hOldIList) 
  ImageList_Destroy_(hOldIList) 
  ImageList_SetIconSize_(hNewIList, 32, 32) 
  SendMessage_(hTB, #TB_SETIMAGELIST, 0, hNewIList) 
  SendMessage_(hTB, #TB_SETBITMAPSIZE, 0, MakeLong(32,32)) 
  SendMessage_(hTB, #TB_SETBUTTONSIZE, 0, MakeLong(36,36)) 
  SendMessage_(hTB, #TB_AUTOSIZE, 0, 0) 
  ToolBarImageButton(0, 1) 
  ToolBarImageButton(1, 2) 
  ToolBarImageButton(2, 3) 
  Repeat 
    EventID = WaitWindowEvent() 
    If EventID = #PB_Event_Menu 
      Debug "ToolBar ID: "+Str(EventMenu()) 
    EndIf 
  Until EventID = #PB_Event_CloseWindow 
  ImageList_Destroy_(hNewIList) 
EndIf

Verfasst: 28.06.2008 11:25
von Programie
Hi,

Ich hab das nun auch mal ausprobiert und es geht.
Man muss aber die ImageID bei AddToolBarImageButton() angeben. :wink:

Jetzt ist da aber noch ein kleiner Bug: Wenn ich die ToolBarhöhe mit ToolBarHeight(#ToolBar) nach dem Hinzufügen und Ändern der Größe ermittle, um die Gadgets, die darunter noch sind an der richtigen Position zu platzieren, gibt ToolBarHeight() immer noch die alte Höhe zurück. Erst wenn man das Fenster von Hand vergrößert/verkleinert und ich das Event "#PB_Event_SizeWindow" empfange, funktioniert es.

Hat jemand eine Idee, warum das vor der Schleife noch nicht ausgelesen werden kann? :?

//EDIT: Hab den Bug gefunden. War nen Fehler von mir. Hab bei MakeLong die falsche Größe angegeben. :mrgreen: