Seite 1 von 2
[gelöst] Hilfefunktion (Titelleiste)
Verfasst: 04.11.2005 21:44
von scholly
moin, moin...
In vielen Programmen gibts die Möglichkeit, in der Titelleiste eines Fensters ein Fragezeichen anzuklicken, dann auf einen Bereich zu klicken und für diesen Bereich (bzw dessen Funktion) eine Hilfe/Info zu bekommen.
(Wie) Kann ich diese Funktionalität in mein PB-Proggi integrieren ?
(Wo) Gibts ein Beispiel ?
schönes Wochenende...
scholly
Verfasst: 04.11.2005 21:49
von vonTurnundTaxis
Wenn ich mich recht erinnere, gibt es eine derartige Funktion in der SkinWin-Lib.
Schau mal hier:
http://www.pbosl.purearea.net
Verfasst: 04.11.2005 22:26
von ts-soft
mit der PBOSL_SkinWin Lib kannste den Style erstellen, aber das Codebeispiel mit den Messages, war wahrscheinlich im CodeArchiv???, finde ich im moment leider nicht.
Verfasst: 04.11.2005 22:36
von scholly
moin, moin...
ts-soft hat geschrieben:mit der PBOSL_SkinWin Lib kannste den Style erstellen, aber das Codebeispiel mit den Messages, war wahrscheinlich im CodeArchiv???, finde ich im moment leider nicht.
genausoweit binnich grade :(
"ShowhelpButton" ist drin, aber bei den ganzen 5 MB Beispielen klappt noch
nichmal das mit Skinwin :(
Ma kucken, ob bei den "normalen Beispielen" zufälligerweise was reingerutscht ist, denn ohne die Messages komm ich wohl nich weiter.
Vielleicht find ich ja was in den sourcn...
bis denne...
scholly
ps: geil, wie schnell einem hier gehelft wird ;)
Verfasst: 04.11.2005 23:02
von vonTurnundTaxis
Code: Alles auswählen
DeinFenster = OpenWindow(#PB_Any, 0, 0, 200, 200, #PB_Window_ScreenCentered|#PB_Window_SystemMenu, "Dein Fenster")
ShowHelpButton(WindowID(DeinFenster), #TRUE)
Repeat
Until WindowEvent() = #PB_Event_CloseWindow
Verfasst: 04.11.2005 23:46
von scholly
@vonTurnundTaxis
Jo, so sieht das bei mir in etwa aus.
Aber irgendwas muß ich doch irgendwo zurückgeliefert bekommen, wenn ich mit dem "Fragezeichen-Mauszeiger" auf ein Gadget klicke.
Oder mach ich da einen Denkfehler ?
Muß ich mir das mit Maus-Positionen selbst zusammensuchen ?
irritert...
scholly
Verfasst: 04.11.2005 23:54
von ts-soft
>> Muß ich mir das mit Maus-Positionen selbst zusammensuchen ?
Nein, wenn ich das Schnipsel gefunden habe nicht, dafür gibt es Messages, die ich leider nicht finde, aber ich suche weiter
//Edit
Auf jedenfall wird eine #WM_HELP message ausgelöst, mußte nur noch abfragen welche Gadget den Fokus hat, wenn diese Message auftritt.
Pseudo-Code:
Code: Alles auswählen
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #WM_HELP
ButtonID = GetFocus_()
;;;
;;
EndSelect
ForEver
Verfasst: 05.11.2005 00:12
von scholly
hm...
Wenn ich den Schnipsel einfüge, gibts einen Requester:
"Line 38: Constant not found: #WM_Help"
Ist das ein Win-Api-Teil, der mit dem PB-Demo nicht geht ?
Oder liegts an Win98 ?
bis denne...
scholly
Verfasst: 20.11.2005 19:30
von scholly
moin, moin...
Nachdem ich jetzt meine registrierte Version habe, sollte ich eigentlich eine Reaktion aufs Drücken des HELP-Buttons provozieren können, aber nix tut sich
Gibts jemand, der anhand dieses Schnipsels erklären mag, was ich wo falsch mache ?
Code: Alles auswählen
If OpenWindow(0,10,10,790,590, #PB_Window_SystemMenu | #PB_Window_ScreenCentered,"help-test")
ShowHelpButton( WindowID((0)), #True )
If CreateGadgetList(WindowID(0))
ButtonGadget(0, 10, 10, 200, 20, "Standard Button")
ButtonGadget(1, 10, 40, 200, 20, "Left Button", #PB_Button_Left)
ButtonGadget(2, 10, 70, 200, 20, "Right Button", #PB_Button_Right)
ButtonGadget(3, 10,100, 200, 60, "Multiline Button (longer text gets wrapped)", #PB_Button_MultiLine)
ButtonGadget(4, 10,170, 200, 20, "Toggle Button", #PB_Button_Toggle)
EndIf
EndIf
Repeat
Select WaitWindowEvent()
Case #WM_HELP
Debug "buttonID: "
ButtonID = GetFocus_()
Debug ButtonID
Select ButtonID
Case 0
Debug "standard button"
Case 1
Debug "left button"
Default
Debug "I dont care"
EndSelect
Case #PB_Event_CloseWindow
Debug "closewindow"
Break
EndSelect
ForEver
End ; regular end of code
bis denne...
scholly
Verfasst: 20.11.2005 19:53
von edel
Ich glaube das PB die Message gar nicht verarbeitet , mit einem
Callback sollte es dann aber gehen .
Code: Alles auswählen
Procedure MyWindowCallback(WindowID, message, wParam, lParam)
Result = #PB_ProcessPureBasicEvents
Protected *Help.HELPINFO
Select message
Case #WM_HELP
*Help = lParam
Debug *Help\iCtrlId ;> Control Id
Debug *Help\hItemHandle ;> Control Handle
EndSelect
ProcedureReturn Result
EndProcedure
If OpenWindow(0,10,10,790,590, #PB_Window_SystemMenu | #PB_Window_ScreenCentered,"help-test")
ShowHelpButton( WindowID((0)), #True )
SetWindowCallback(@MyWindowCallback())
If CreateGadgetList(WindowID(0))
ButtonGadget(0, 10, 10, 200, 20, "Standard Button")
ButtonGadget(1, 10, 40, 200, 20, "Left Button", #PB_Button_Left)
ButtonGadget(2, 10, 70, 200, 20, "Right Button", #PB_Button_Right)
ButtonGadget(3, 10,100, 200, 60, "Multiline Button (longer text gets wrapped)", #PB_Button_MultiLine)
ButtonGadget(4, 10,170, 200, 20, "Toggle Button", #PB_Button_Toggle)
EndIf
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Debug "closewindow"
Break
EndSelect
ForEver
End ; regular end of code