Seite 2 von 2
Verfasst: 28.03.2005 07:12
von ts-soft
125 hat geschrieben:ja wie gesagt im letzten Parameter müssen irgendwie 2 Werte rein ich weis nur nicht wie. damit kannste dann höhe + länge anpassen.
@ Api-Pros Bitte helft uns.
2 Word-Werte sollen als long übergeben werden. Das kannste z.B. so machen:
Code: Alles auswählen
Procedure MakeLong(low.w, high.w)
ProcedureReturn low + (high << 16)
EndProcedure
lParam = MakeLong(dx.w, dy.w)
Verfasst: 28.03.2005 13:46
von 125
THX

Verfasst: 28.03.2005 13:55
von Falko
Und hier noch das komplette Beispiel zu MakeLong und den anderen beiden
Funktionen als Procedure, falls die mal gebraucht
werden (Tip von Danilo aus dem PureBoard-Archiv)
http://forums.purebasic.com/german/arch ... t=makelong
MfG Falko
Verfasst: 28.03.2005 14:14
von DarkDragon
Code: Alles auswählen
Structure TBSize
x.l
y.l
EndStructure
Procedure MAKELONG(low, high)
ProcedureReturn low | (high<<16)
EndProcedure
Procedure.l XHiWord(a.l)
ProcedureReturn Int(a / $10000)
EndProcedure
Procedure.l XLoWord(a.l)
ProcedureReturn Int(a - (Int(a/$10000)*$10000))
EndProcedure
#WindowWidth = 640
#WindowHeight = 480
#WindowFlags = #PB_Window_SizeGadget | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered | #PB_Window_SystemMenu
hWnd = OpenWindow(0, 0, 0, #WindowWidth, #WindowHeight, #WindowFlags, "")
hToolbar = CreateToolBar(0, hWnd)
ToolBarStandardButton(0, #PB_ToolBarIcon_New)
size.TBSize
size\x = 128
size\y = 128
SendMessage_(hToolbar, #TB_SETBUTTONSIZE, 0, MAKELONG(size\x, size\y))
ResizeWindow(WindowWidth()+1, WindowHeight()+1) : ResizeWindow(WindowWidth()-1, WindowHeight()-1)
Repeat
Event = WindowEvent()
Delay(10)
Until Event = #PB_Event_CloseWindow
End
Verfasst: 28.03.2005 14:25
von ts-soft
Wozu ist: XHiWord und XLoWord da, wird doch garnicht verwendet

Verfasst: 28.03.2005 14:28
von DarkDragon
ts-soft hat geschrieben:Wozu ist: XHiWord und XLoWord da, wird doch garnicht verwendet


danke, aber ich liefer am liebsten immer alle prozeduren mit, wenn sie klein sind und zur gruppe gehören.
Verfasst: 28.03.2005 14:46
von ts-soft
hast ja Recht:
Code: Alles auswählen
Procedure.w HiWord(Param.l)
ProcedureReturn (Param.l >> 16) & $FFFF
EndProcedure
Procedure.w LoWord(Param.l)
ProcedureReturn Param.l & $FFFF
EndProcedure
Procedure.b HiByte(Param.w)
ProcedureReturn (Param.w >> 8) & $FF
EndProcedure
Hoffentlich ist das alles richtig, o_O
Gruß
Thomas
Verfasst: 14.05.2007 00:25
von Recay
Ich habe hierzu nochmal eine Frage:
Meine Bilder werden immer noch nur auf der Standardgröße angezeigt, nur sind sie jetzt zentriert in einem großen Button.. was mache ich da?
ps: #TB_SETBITMAPSIZE klappt irgendwie auch nicht so richtig..
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.
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.
