Funktioniert wunderbar bei mir

Unter Vista Business sogar
Was ich noch gerne hätte:
Dass die Icons beim Disablen des Buttons auch ein wenig angrauen, genauo leicht, wie der Text. Also optional.
Ansonsten hätte ich es gerne, dass man die MessageID übergeben könnte. Sofern man verschiedene Sachen mit der Toolbar machen möchte, ist man selber Herr über die interne Nachrichten-Gruppierung. Zudem wir ja eh eine ID zum Erstellen der Toolbar brauchen, kann diese auch gleich die Nachricht sein.
Also anstatt
Code: Alles auswählen
CallFunction(0,"PGDR_SetMessageOffset",100)
CallFunction(0,"PGDR_SetTBButton",#TB_Button_0,"Hinauf ",ImageID(#Image_0))
eher einfach die ID des Buttons nehmen. Dann ist ButtonID=Nachricht.
Code: Alles auswählen
Enumeration #WM_USER
#TB_Button_0
#TB_Button_1
EndEnumeration
CallFunction(0,"PGDR_SetTBButton",#TB_Button_0,"Hinauf ",ImageID(#Image_0))
CallFunction(0,"PGDR_SetTBButton",#TB_Button_1,"Runter ",ImageID(#Image_1))
Meine nächste Idee wäre, tatsächlich "Nachrichten" zu schicken, und nicht nur die ID des jeweiligen Knopfes. Nachteil wäre hierbei, das man eine kleine INCLUDE braucht mit den Nachrichtenkonstanten, die man empfangen kann. Dann wird die Callback aber auch standardkonformer. Also in der Include würde dann stehen
Code: Alles auswählen
Enumeration #WM_USER
#PGDR_Msg_ButtonAdded
#PGDR_Msg_ButtonDown
#PGDR_Msg_ButtonUp
#PGDR_Msg_ButtonAdded
#PGDR_Msg_ButtonDeleted
EndEnumeration
Im Normalfall würde eh nur "ButtonDown" oder so benutzt werden. Die Nachrichten sollten in der Callback an "wMSG" übergeben werden. In hWnd steht das Handle der jeweiligen Toolbar (oder lieber das Handle des Parentwindow der Toolbar-> aber das ist ne Designfrage). Im wParam steht die ID (die wir ja vorher definiert hatten) und im lParam könntest du noch extrainformationen anbieten, die mir in diesem Fall aber irgendwie nicht einfallen wollen

Ne Möglichkeit wäre ne X/Y Koordinate des Mausklicks zu übergeben (im Normalfall ist der lParam ein DWORD, den man in 2 WORDS aufteilen kann- also kannst du in eine Variable 2 Koordinaten packen, sofern sie nicht zu groß sind).
Ich weiß nicht, ob das mit PB möglich ist, aber das sollte es eigentlich: Wenn du die Toolbar hinzufügst, kannst du die Windowcallback des Fensters auf welche du die legst verwenden. Also standardmäßig. Einziges Manko: Du musst dann zusätzlich eine Funktion anbieten, die "manuell" die Callback setzt, sofern man eine eigene für die Toolbar verwenden möchte, und nicht in der Windowcallback des Parents selber. Diese Methode hätte aber (wenn ich das System von Pure richtig verstehe) den Vorteil, dass normale PB-Nutzer sich nicht mit Callbacks herumschlagen müssen. Die können dann einfach mit
Code: Alles auswählen
Repeat
Event = WaitWindowEvent()
WindowID = EventWindow()
GadgetID = EventGadget()
EventType = EventType()
If Event = #PGDR_Msg_ButtonDown
If GadgetID = #TB_Button_1
MessageRequester("Info", "Button 1 wurde gedrückt")
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
EndIf
arbeiten, so wie sies gewohnt sind. Und wenn mans gerne "extra" hätte, gibts dann eben die Funktion "PGDR_SetTBCallBack(hToolbarHandle, @WndCallback())".
Bitte verstehe das nicht als gemecker, sondern als Kritik- ich finde deine Toolbar "echt geil", aber um richtig damit zu arbeiten fehlt meines Erachtens noch ein wenig. Für den einfachen Gebraucht ist sie natürlich super (und würde mit der ID-Geschichte ja NOCH einfacher laufen

). Und für PureUser wäre es eben angenehm, ihr System mit den Events zu behalten.
Ansonsten: WEITER SO! Prinzipiell bin ich begeistert, weil sie ist echt formschön ist und einfach gehalten!
Gr33tz
Tafkadasom2k5
