Neues Icon [?] in der Titlebar erstellen und abfragen?
Neues Icon [?] in der Titlebar erstellen und abfragen?
Hallo,
wie erstelle ich ein neues Icon in der Titelleiste.
Oft sieht man das berühmte [?].
Damit möchte ich gerne bei der Auswahl des [?]-Icons
die Maus in ein Fragezeichen wandeln und eine Hilfe
aktivieren, wenn ein bestimmtes Gadget in meinem
Fenster ausgewählt wird.
Hat da vielleicht jemand eine Idee?
Danke,
Dr. Pixel
wie erstelle ich ein neues Icon in der Titelleiste.
Oft sieht man das berühmte [?].
Damit möchte ich gerne bei der Auswahl des [?]-Icons
die Maus in ein Fragezeichen wandeln und eine Hilfe
aktivieren, wenn ein bestimmtes Gadget in meinem
Fenster ausgewählt wird.
Hat da vielleicht jemand eine Idee?
Danke,
Dr. Pixel
Re: Neues Icon [?] in der Titlebar erstellen und abfragen?
> wie erstelle ich ein neues Icon in der Titelleiste.
das kannst Du u.a. mit dem Befehl ShowHelpButton() aus der SkinWin-Lib
von Danilo bewerkstelligen.
Die SkinWin-Lib ist im PBOSL-Paket integriert: http://pbosl.purearea.net/
Grüße ... Kiffi
das kannst Du u.a. mit dem Befehl ShowHelpButton() aus der SkinWin-Lib
von Danilo bewerkstelligen.
Die SkinWin-Lib ist im PBOSL-Paket integriert: http://pbosl.purearea.net/
Grüße ... Kiffi
OK ich meine die Titelleiste!
@ Kiffi: Danke für den Link!
Leider finde ich keine Anleitung (auch über SUCHE nicht!) für die
PBOSL zum einbinden in den eigenen Sourcecode.
Ich habe mir die Zipdatei PBOSL_WIN heruntergeladen.
Wie binde ich jetzt die Lib ein?
Vielleicht so?:
Nur wenn ich diesen code kompiliere und die exe zweimal gleichzeitig starte,
bekomme ich trotzdem die Meldung: "This is the first time starting this application"
Binde ich die Lib falsch ein?
Bitte um Hilfe.
Danke,
Dr. Pixel
@ Kiffi: Danke für den Link!
Leider finde ich keine Anleitung (auch über SUCHE nicht!) für die
PBOSL zum einbinden in den eigenen Sourcecode.
Ich habe mir die Zipdatei PBOSL_WIN heruntergeladen.
Wie binde ich jetzt die Lib ein?
Vielleicht so?:
Code: Alles auswählen
; AppRunning Twice ???
If OpenLibrary(0, "D:\Purebasic\PBOSL\PBOSL_WIN\PBOSL\PureBasic\PureLibraries\UserLibraries\PBOSL_AppRunning") ;Name der kompilierten Lib
EndIf
OpenConsole()
MyApp.s="This is my Application"
Result=CallFunction(0, "AppRunning(MyApp.s)")
If Result=0
PrintN("This is the first time starting this application")
Else
PrintN("There is another task running with same Applicationname!")
EndIf
Dummy.s=Input()
Result=CallFunction(0, "AppRunning(MyApp.s)")
PrintN("---------------------------------------------------------------")
PrintN("Result of AppRunning("+Chr(34)+MyApp+Chr(34)+") is "+Str(Result))
Dummy.s=Input()
CloseConsole()
CloseLibrary(0)
bekomme ich trotzdem die Meldung: "This is the first time starting this application"
Binde ich die Lib falsch ein?
Bitte um Hilfe.
Danke,
Dr. Pixel
@Dr.Pixel
- schliesse den pb editor bzw. jaPBe sofern geöffnet
- den inhalt von PBOSL_WIN\PBOSL\PureBasic\PureLibraries\UserLibraries kopierst du nach C:\Programme\PureBasic\PureLibraries\UserLibraries
- den inhalt von PBOSL_WIN\PBOSL\PureBasic\Residents kopierst du nach C:\Programme\PureBasic\Residents
- den inhalt von PBOSL_WIN\PBOSL\PureBasic\Help kopierst du nach C:\Programme\PureBasic\Help
- usw. falls mehr zeug vorhanden ist
wie du siehst habe ich hier C:\Programme\PureBasic geschrieben, solltest du pb woanders installiert haben, musst du den pfad natürlich durch deinen ersetzen.
jetzt kannst du die befehle wie ganz normale pb befehle aufrufen:
edit: copy paste fehler gefixt
c ya,
nco2k
- schliesse den pb editor bzw. jaPBe sofern geöffnet
- den inhalt von PBOSL_WIN\PBOSL\PureBasic\PureLibraries\UserLibraries kopierst du nach C:\Programme\PureBasic\PureLibraries\UserLibraries
- den inhalt von PBOSL_WIN\PBOSL\PureBasic\Residents kopierst du nach C:\Programme\PureBasic\Residents
- den inhalt von PBOSL_WIN\PBOSL\PureBasic\Help kopierst du nach C:\Programme\PureBasic\Help
- usw. falls mehr zeug vorhanden ist
wie du siehst habe ich hier C:\Programme\PureBasic geschrieben, solltest du pb woanders installiert haben, musst du den pfad natürlich durch deinen ersetzen.
jetzt kannst du die befehle wie ganz normale pb befehle aufrufen:
Code: Alles auswählen
If OpenWindow(0, 0, 0, 480, 320, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "")
ShowHelpButton(WindowID(), #True)
Repeat
WinEvent.l = WaitWindowEvent()
Until WinEvent = #PB_Event_CloseWindow
EndIf
End
c ya,
nco2k
Zuletzt geändert von nco2k am 17.11.2005 12:58, insgesamt 1-mal geändert.
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
> Ich habe mir die Zipdatei PBOSL_WIN heruntergeladen.
gut. Dieses Zip beinhaltet die Libraries. Was Du nun für Dein besseres
Verständnis benötigst, ist das Example-Zip. Dort sind für jede im
PBOSL-Paket enthaltene Lib Beispieldateien vorhanden.
Hier der Direktlink: http://pbosl.purearea.net/pbosl_examples.zip
Grüße ... Kiffi
gut. Dieses Zip beinhaltet die Libraries. Was Du nun für Dein besseres
Verständnis benötigst, ist das Example-Zip. Dort sind für jede im
PBOSL-Paket enthaltene Lib Beispieldateien vorhanden.
Hier der Direktlink: http://pbosl.purearea.net/pbosl_examples.zip
Grüße ... Kiffi
Dank an nco2k und Kiffi
Jetzt kann ich auch die PBOSL nutzen
Nur leider schaffe ich es nicht mit #WM_HELP den Hilfebutton abzufragen
Auszug aus der Hilfe:
When the user clicks the help button in the titlebar, the cursor changes
to a question mark with a pointer and when a gadget/childwindow gets
clicked, the window callback receives a #WM_HELP message.
Was mach ich hier falsch:
Danke,
Dr. Pixel

Jetzt kann ich auch die PBOSL nutzen



Nur leider schaffe ich es nicht mit #WM_HELP den Hilfebutton abzufragen

Auszug aus der Hilfe:
When the user clicks the help button in the titlebar, the cursor changes
to a question mark with a pointer and when a gadget/childwindow gets
clicked, the window callback receives a #WM_HELP message.
Was mach ich hier falsch:
Code: Alles auswählen
Enumeration
#Button_1
#Button_2
EndEnumeration
start:
If OpenWindow(0, 0, 0, 480, 320, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "")
ShowHelpButton(WindowID(), #True)
If CreateGadgetList(WindowID())
ButtonGadget(#Button_1, 30, 40, 210, 20, "Domänenkonto entsperren", #PB_Button_Default)
ButtonGadget(#Button_2, 30, 65, 210, 20, "Domänenkonto INCA entsperren")
EndIf
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_Gadget
Select EventGadgetID()
Case #WM_HELP : Goto help
Case 0 : Goto button1
Case 1 : Goto button2
EndSelect
EndSelect
Until EventID = #PB_Event_CloseWindow
EndIf
End
help:
MessageRequester("Help","Hilfe aktiviert",0)
Goto start
button1:
MessageRequester("Button 1","Button gedrückt",0)
Goto start
button2:
MessageRequester("Button 2","Button gedrückt",0)
Goto start
Dr. Pixel
> Was mach ich hier falsch:
als erstes: Lass bitte den Goto-Quatsch weg! Der ist unnötig und in
Deinem Beispiel auch noch falsch (Du springst mit 'goto start' an
eine völlig ungeeignete Stelle Deines Codes).
Für die Abfrage von #WM_Help benötigst Du einen Callback.
Nachfolgend mal ein Beispiel, wie das zu realisieren ist:
Grüße ... Kiffi
als erstes: Lass bitte den Goto-Quatsch weg! Der ist unnötig und in
Deinem Beispiel auch noch falsch (Du springst mit 'goto start' an
eine völlig ungeeignete Stelle Deines Codes).
Für die Abfrage von #WM_Help benötigst Du einen Callback.
Nachfolgend mal ein Beispiel, wie das zu realisieren ist:
Code: Alles auswählen
Enumeration
#Button_1
#Button_2
EndEnumeration
Procedure.l WindowCallback(hWnd, Msg, wParam, lParam)
Result = #PB_ProcessPureBasicEvents
Select Msg
Case #WM_HELP
GetCursorPos_(MousePos.POINT)
Select WindowFromPoint_(MousePos\x,MousePos\y)
Case GadgetID(#Button_1)
MessageRequester("Button 1","Hilfe für Button1")
Case GadgetID(#Button_2)
MessageRequester("Button 2","Hilfe für Button2")
EndSelect
EndSelect
ProcedureReturn Result
EndProcedure
If OpenWindow(0, 0, 0, 480, 320, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "")
ShowHelpButton(WindowID(), #True)
If CreateGadgetList(WindowID())
ButtonGadget(#Button_1, 30, 40, 210, 20, "Domänenkonto entsperren", #PB_Button_Default)
ButtonGadget(#Button_2, 30, 65, 210, 20, "Domänenkonto INCA entsperren")
EndIf
SetWindowCallback(@WindowCallback())
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_Gadget
Select EventGadgetID()
Case #Button_1
MessageRequester("Button 1","Button gedrückt",0)
Case #Button_2
MessageRequester("Button 2","Button gedrückt",0)
EndSelect
EndSelect
Until EventID = #PB_Event_CloseWindow
EndIf
End
Grossen Dank an Kiffi
Klappt ja wunderbar.
Die Geschichte mit dem goto nehme ich zur Kenntnis!
Kann mir jemand einen Link oder eine Erklärung zukommen lassen, in dem das Thema Callback erklärt wird?
Ausserdem verstehe ich nicht, warum das Programm in die Procedure WindowCallback springt beim drücken des [?], obwohl sich das Programm in der Repeatschleife befindet?
@nco2k: <<ausserdem sollte #WM_HELP den wert 53 haben (laut ApiViewer) und nicht 83.>> ???
Hmm, kannst Du das genauer erklären?
mfg
Dr. Pixel

Klappt ja wunderbar.
Die Geschichte mit dem goto nehme ich zur Kenntnis!
Kann mir jemand einen Link oder eine Erklärung zukommen lassen, in dem das Thema Callback erklärt wird?
Ausserdem verstehe ich nicht, warum das Programm in die Procedure WindowCallback springt beim drücken des [?], obwohl sich das Programm in der Repeatschleife befindet?
@nco2k: <<ausserdem sollte #WM_HELP den wert 53 haben (laut ApiViewer) und nicht 83.>> ???
Hmm, kannst Du das genauer erklären?
mfg
Dr. Pixel