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 :wink:

//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