Statusbar SystemID
- computerkranker
- Beiträge: 66
- Registriert: 12.10.2004 21:21
Statusbar SystemID
Kann mir jemand helfen und sagen wie ich die SystemID einer Statusbar bekommen kann wenn ich sie mit #PB_ANY angelegt habe?
ISStatusBar() geht ja anscheinend nicht.
ISStatusBar() geht ja anscheinend nicht.
Eben nicht beim Anlegen mit [c]#PB_Any[/c], sondern, wenn man eineZaphod hat geschrieben:die wird beim anlegen mit #any zurückgeliefert.
feste Konstante angibt.
Lars
The only problem with troubleshooting is, that sometimes the trouble shoots back.
P4 2,6Ghz, 512MB RAM, GeForce 6200, WinXP Pro SP2, PB V3.94
The only problem with troubleshooting is, that sometimes the trouble shoots back.
P4 2,6Ghz, 512MB RAM, GeForce 6200, WinXP Pro SP2, PB V3.94
- computerkranker
- Beiträge: 66
- Registriert: 12.10.2004 21:21
Statusbar SystemID
StatusBarID(#Statusbar) wäre da sicher ganz nützlich...Ich brauche die SystemID der Statusbar um einige Gadget's auf die Statusbar zubekommen.
Bei MDI's wird es sonst umständlich.
Bei MDI's wird es sonst umständlich.
Ich suche sowas auch für die ToolBar, also ein Äquivalent zu WindowID() und GadgetID(). Zur Zeit übergebe ich den Handle per Shared zwischen den Proceduren, siehe Beispiel. Aber eine Struktur SetToolbarButtonState(#toolbar, #tbbutton, state) wäre schon besser:
Etwas Brauchbares in den API habe ich nicht gefunden, was aber nichts heissen muss.
Sven
Code: Alles auswählen
Procedure SetToolbarButtonState(tbbID.l, tbbstate.l)
Shared htool.l ;Toolbar-Handle zugänglich machen
SendMessage_(htool, #TB_CHECKBUTTON, tbbID, tbbstate) ;TBB State setzen
EndProcedure
Procedure.l GetToolbarButtonState(tbbID.l)
Shared htool.l ;Toolbar-Handle zugänglich machen
tbbstate.l = SendMessage_(htool, #TB_ISBUTTONCHECKED, tbbID, 0) ;TBB State abfragen
ProcedureReturn tbbstate
EndProcedure
Procedure MakeToolBar()
Shared htool.l ;Toolbar-Handle zugänglich machen
htool = CreateToolBar(#toolbar, WindowID())
...
EndProcedure
SetToolbarButtonState(#tbbutton, 0) ;TBB uncheckedSven
- computerkranker
- Beiträge: 66
- Registriert: 12.10.2004 21:21
ISStatusBar
leider nicht.achso... bekommnt man die nicht aber zurückgeliefert, wenn man IsStatusBar(#Statusbar) benutzt?
ISStatusBar genau wie ISGadget liefern einen Wert zurück der (zumindest für mich nicht erkennbar) nichts mit dem Handle zu tun hat.
Beispiel:
Code: Alles auswählen
If OpenWindow(0,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_MaximizeGadget,"Test")
If CreateGadgetList(WindowID(0))
ButtonGadget(0,10,10,100,24,"Test")
EndIf
StatusBar=CreateStatusBar(0,WindowID())
Debug "GadgetID: "+Str(GadgetID(0))
Debug "IsGadget: "+Str(IsGadget(0))
Debug "Statusbar-Handle : "+Str(StatusBar)
Debug "Statusbar-ISStatusbar: "+Str(IsStatusBar(0))
Repeat :
Until WaitWindowEvent() =#PB_Event_CloseWindow
EndIf
- freedimension
- Admin
- Beiträge: 1987
- Registriert: 08.09.2004 13:19
- Wohnort: Ludwigsburg
- Kontaktdaten:
Hab mal in das SDK geschaut und das hier ist dabei rum gekommen. Bei mir gibt es zumindest ohne #PB_Any denselben Handle zurück wie StatusBarGadget selber.
Das ganze funktioniert nur wenn die Statusbar die aktuell ausgewählte ist, keine Ahnung wie man das noch nach dem Erstellen mehrerer StatusBars beeinflussen kann, also am Besten immer direkt nach dem Erstellen in einem Array oder einer LL ablegen.
Edit: ASM-Unterstützung muss an sein
Code: Alles auswählen
Procedure StatusBarID()
!EXTRN _PB_StatusBar_CurrentObject
sbptr.l = 0
!MOV EAX, dword [_PB_StatusBar_CurrentObject]
MOV sbptr, EAX
*sb.LONG = sbptr
ProcedureReturn *sb\l
EndProcedure
Edit: ASM-Unterstützung muss an sein
- freedimension
- Admin
- Beiträge: 1987
- Registriert: 08.09.2004 13:19
- Wohnort: Ludwigsburg
- Kontaktdaten:
also wenn du das wie im nachstehenden code machst bekommst du das handle (die ID) der statusbar. Mit genau diesem rückgabewert kannst du ja auch meine lieb CN_Tools (zu finden bei PureArea.net und heute um eine funktion reicher) benutzen und da brauche ich ja auch das handle (die ID) der statusbar denn die lib benuzt keine PB funktionen sondern API.
MfG Nico
Code: Alles auswählen
hstb = CreateStatusBar(0,WindowID())