Toolbar

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Beitrag von Thomas »

So klappt das nicht!:

Code: Alles auswählen

SendMessage_(hwndToolbar,#TB_SETBITMAPSIZE,0,32 | 32 << 16)
Meine 32x32-Pixel-Icons werden wieder nur als 16x16 dargestellt Wieso? :|
v6.00
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

weil die interne Imagelist auf 16x16 gestellt ist

Suche auf MSDN nach :

TB_GETIMAGELIST
TB_SETIMAGELIST
ImageList_Destroy
ImageList_Create

Wenn du das in deinen Code eingebaut setzt du noch die Button Groesse
richtig (siehe Fluid Byte Post). Danach kannst du deine Buttons einfuegen.
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Beitrag von Shardik »

Thomas hat geschrieben: Kann man auch größere Toolbarsymbole darstellen?
z.B. 24x24-Pixel-Große Grafiken statt immer nur den kleinen 16x16-Pixel-Grafiken?
Sparkie hat im englischen Forum ein direkt einsetzbares Code-Beispiel für PB 3.9x veröffentlicht:
http://www.purebasic.fr/english/viewtop ... 06&start=3

Eine andere Möglichkeit besteht darin, die in den PureTools von Danilo enthaltene ToolbarPro einzusetzen (UserLib angepaßt an PB 4 und weiterentwickelt von srod):
http://www.purebasic.fr/english/viewtopic.php?t=25658
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Beitrag von Thomas »

Shardik hat geschrieben:
Thomas hat geschrieben: Kann man auch größere Toolbarsymbole darstellen?
z.B. 24x24-Pixel-Große Grafiken statt immer nur den kleinen 16x16-Pixel-Grafiken?
Sparkie hat im englischen Forum ein direkt einsetzbares Code-Beispiel für PB 3.9x veröffentlicht:
http://www.purebasic.fr/english/viewtop ... 06&start=3
Das klappt aber nicht mit den ToolBarStandardButton(...)! :|

Gibt es ne möglichkeit ToolBarButtons wie beim IE zu erstellen?
v6.00
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Gibt es ne möglichkeit ToolBarButtons wie beim IE zu erstellen?
Was ist an den anders?
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Beitrag von Thomas »

Fluid Byte hat geschrieben:
Gibt es ne möglichkeit ToolBarButtons wie beim IE zu erstellen?
Was ist an den anders?
Größer, mit DropDown-Pfeilen, ...
v6.00
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Natuerlich
MSDN hat geschrieben: BTNS_DROPDOWN
Version 5.80. Creates a drop-down style button that can display a list when the button is clicked. Instead of the WM_COMMAND message used for normal buttons, drop-down buttons send a TBN_DROPDOWN notification. An application can then have the notification handler display a list of options. Use the equivalent style flag, TBSTYLE_DROPDOWN, for version 4.72 and earlier.
If the toolbar has the TBSTYLE_EX_DRAWDDARROWS extended style, drop-down buttons will have a drop-down arrow displayed in a separate section to their right. If the arrow is clicked, a TBN_DROPDOWN notification will be sent. If the associated button is clicked, a WM_COMMAND message will be sent.
Bzw TBSTYLE_DROPDOWN .
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Beitrag von Thomas »

Fluid Byte hat geschrieben:

Code: Alles auswählen

OpenWindow(0,0,0,400,300,"void",$CC0001)

hwndToolbar = CreateToolBar(0,WindowID(0))

For i=0 To 5 : ToolBarStandardButton(i,i) : Next

SendMessage_(hwndToolbar,#TB_SETBUTTONSIZE,0,32 | 32 << 16)
SendMessage_(hwndToolbar,#TB_AUTOSIZE,0,0)

While WaitWindowEvent() ! 16 : Wend
Ok,
wie krieg ich hier die Icons größer und kann trotzdem noch ToolbarStandardButton(...) nutzen?
v6.00
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Beitrag von Shardik »

Thomas hat geschrieben: Ok,
wie krieg ich hier die Icons größer und kann trotzdem noch ToolbarStandardButton(...) nutzen?
Ich war jetzt zu faul, mit ResourceHacker die korrekte DLL zu suchen, aber mit der Shell32.Dll würde es so gehen:

Code: Alles auswählen

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

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

If OpenWindow(0, 0, 0, 350, 250, "ToolBar mit großen Standard-Icons", #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) 

  ; ----- Icons aus Shell32.dll extrahieren
  Shell32Icon0 = ExtractIcon_(0, "Shell32.dll", 42)
  Shell32Icon1 = ExtractIcon_(0, "Shell32.dll", 43)
  Shell32Icon2 = ExtractIcon_(0, "Shell32.dll", 44)

  ToolBarImageButton(0, Shell32Icon0)
  ToolBarImageButton(1, Shell32Icon1)
  ToolBarImageButton(2, Shell32Icon2)

  Repeat 
    EventID = WaitWindowEvent()

    If EventID = #PB_Event_Menu 
      Debug "ToolBar ID: "+Str(EventMenu()) 
    EndIf 

  Until EventID = #PB_Event_CloseWindow

  ImageList_Destroy_(hNewIList) 
EndIf
Noch einfacher (und mit den Standard-Icons) geht es mit Danilos UserLib ToolBarPro:

Code: Alles auswählen

If OpenWindow(0, 0, 0, 350, 250, "ToolBarPro mit großen Standard-Icons", #PB_Window_SystemMenu |#PB_Window_SizeGadget | #PB_Window_ScreenCentered)
  CreateTB(0, WindowID(0), 24, 24, #TBpro_FLAT | #TBpro_BORDER)
  AddTBsysIcons()
  AddTBbutton(0, #TBpro_FILEOPEN, #TBpro_BUTTON)
  AddTBbutton(1, #TBpro_FILESAVE, #TBpro_BUTTON)
  AddTBseparator()
  AddTBbutton(2, #TBpro_DELETE, #TBpro_BUTTON)

  Repeat 
    EventID = WaitWindowEvent()

    If EventID = #PB_Event_Menu
      Debug "ToolBar ID: " + Str(EventMenu())
    EndIf
  Until EventID = #PB_Event_CloseWindow
EndIf
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Beitrag von Thomas »

ich glaub ich weiß nun auch, wieso es mit ToolbarStandardButton(..., #PB_ToolBarIcon_New) nicht geht:
Das Ding kann so nur 32x32 Pixel-Icons.
v6.00
Antworten