[gelöst] Hilfefunktion (Titelleiste)

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

[gelöst] Hilfefunktion (Titelleiste)

Beitrag 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
Zuletzt geändert von scholly am 21.04.2008 22:13, insgesamt 1-mal geändert.
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Benutzeravatar
vonTurnundTaxis
Beiträge: 2130
Registriert: 06.10.2004 20:38
Wohnort: Bayreuth
Kontaktdaten:

Beitrag von vonTurnundTaxis »

Wenn ich mich recht erinnere, gibt es eine derartige Funktion in der SkinWin-Lib.
Schau mal hier:
http://www.pbosl.purearea.net
Nicht durch Zorn, sondern durch Lachen tötet man
ClipGrab | Pastor - jetzt mit kurzen URLs!
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag 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 ;)
Zuletzt geändert von scholly am 26.07.2008 15:17, insgesamt 1-mal geändert.
Benutzeravatar
vonTurnundTaxis
Beiträge: 2130
Registriert: 06.10.2004 20:38
Wohnort: Bayreuth
Kontaktdaten:

Beitrag 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
Nicht durch Zorn, sondern durch Lachen tötet man
ClipGrab | Pastor - jetzt mit kurzen URLs!
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag 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
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag 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
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag 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
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag 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
Antworten