Seite 1 von 2

Hotkeys...

Verfasst: 09.08.2007 15:59
von DerProgrammierer78
Ich habe ein Problem ...

Ich wollte nun Hotkeys anmelden, aber irgendwie klappt das nicht ...

Hier nun ein paar Codeschnipsel:

Code: Alles auswählen

Procedure HotkeyCallback(hwnd, msg, wParam, lParam)
  result = #PB_ProcessPureBasicEvents
  If msg = #WM_HOTKEY
    Select wParam
      Case HotkeyF5:    

      Case HotkeyStrgX: 
      
      Case HotkeyStrgC: 
      
      Case HotkeyStrgV:   
        
    EndSelect
  EndIf
EndProcedure

.
.
.

If OpenWindow(#Hauptfenster, 100, 200, 900, 500, Seitentitel, #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_Maximize)
  
  CreateGadgetList(WindowID(#Hauptfenster)) 
  
    HotkeyF5 = GlobalAddAtom_("F5")
    HotkeyStrgX = GlobalAddAtom_("Strg-X")
    HotkeyStrgC = GlobalAddAtom_("Strg-C")
    HotkeyStrgV = GlobalAddAtom_("Strg-V")

    RegisterHotKey_(WindowID(#Hauptfenster), HotkeyF5, #VK_F5)
    RegisterHotKey_(WindowID(#Hauptfenster), HotkeyStrgX, #MOD_CONTROL | #VK_X)
    RegisterHotKey_(WindowID(#Hauptfenster), HotkeyStrgC, #MOD_CONTROL | #VK_C)
    RegisterHotKey_(WindowID(#Hauptfenster), HotkeyStrgV, #MOD_CONTROL | #VK_V)

    SetWindowCallback(@HotkeyCallback(),#Hauptfenster) 

    Repeat
    Event = WaitWindowEvent()
    
    Select Event
      Case #PB_Event_Gadget
      
        Select EventGadget()
    
        EndSelect    
      
    EndSelect
      
  Until Event = #PB_Event_CloseWindow
   
EndIf



Das Problem liegt da, dass er die Hotkeys nicht einrichten will ...

Der sagt immer incorrect number of parameters. Ich finde aber in der PB-Hilfe keiner Erklärung zu diesem Befehl :freak:

Verfasst: 09.08.2007 16:03
von DerProgrammierer78
Habe nun was entdeckt ... Wenn ich das wie folgt mache, dann kommt keine Fehlermeldung ...

RegisterHotKey_(WindowID(#Hauptfenster), HotkeyF5, "" , #VK_F5)
RegisterHotKey_(WindowID(#Hauptfenster), HotkeyStrgX, #MOD_CONTROL , #VK_X)
RegisterHotKey_(WindowID(#Hauptfenster), HotkeyStrgC, #MOD_CONTROL , #VK_C)
RegisterHotKey_(WindowID(#Hauptfenster), HotkeyStrgV, #MOD_CONTROL , #VK_V)

Aber dann hängt der sich weg :(

Re: Hotkeys...

Verfasst: 09.08.2007 16:08
von Kiffi
RegisterHotKey_() benötigt 4 Parameter; nicht 3, wie in Deinem Code.

Weitere Infos:
http://msdn2.microsoft.com/en-us/library/ms646309.aspx
DerProgrammierer78 hat geschrieben:Ich finde aber in der PB-Hilfe keiner Erklärung zu diesem Befehl :freak:
API-Aufrufe werden nicht in der PB-Hilfe erklärt.
Habe nun was entdeckt ... Wenn ich das wie folgt mache, dann kommt keine Fehlermeldung ...
bitte nicht auf gut Glück irgendetwas ausprobieren.

Lieber mal die Suchfunktion dieses Boards nutzen.

Grüße ... Kiffi

Verfasst: 09.08.2007 16:51
von DerProgrammierer78
Irgendwie klappt das nicht wie es soll :(

Verfasst: 09.08.2007 16:55
von Kiffi
DerProgrammierer78 hat geschrieben:Irgendwie klappt das nicht wie es soll :(
:roll:

mal im Ernst: Was soll uns dieser Text jetzt sagen? Wenn Du nicht in der Lage
bist, Dein Problem vernünftig zu beschreiben, dann können wir Dir auch
nicht helfen.

Verfasst: 09.08.2007 17:03
von DerProgrammierer78
Dieser Text soll bedeuten, dass ich mir die Links von dir durchgelsen habe und dachte verstanden zu haben, aber es klappt nicht ... Egal was ich mache ... sobald ich F5 als Hotkey aktivire hängt sich das Programm weg ....

Verfasst: 09.08.2007 17:11
von DerProgrammierer78
Ich denke ich habe das Problem gelöst ... Danke :mrgreen:

Verfasst: 09.08.2007 17:15
von Kaeru Gaman
lieber "DerProgrammierer78",

dies ist ein Forum und kein chat.
ich bitte dich deshalb,
1. dich solcher extrem kurzer und nahezu sinnleerer postings zu enthalten und
2. nicht nach lust und laune doppelpostings zu machen.

eventuell wäre es für die, die mitgelesen haben, auch interessant zu wissen,
wie und wo du nun das problem gelöst hast.

LG
KG

Verfasst: 09.08.2007 17:23
von Kiffi
DerProgrammierer78 hat geschrieben:Dieser Text soll bedeuten, ....
nein, dieser Text bedeutet: "Ich habe keine Lust, mir mal die Mühe zu
machen, die Suchfunktion zu benutzen und die dort erscheinenden Treffer
anzuschauen. Viel lieber sitze ich hier und warte darauf, dass mir jemand den
Source auf einem Servierteller präsentiert."

Direkt der 2 Treffer bei der Suche nach 'RegisterHotKey' beinhaltet hilfreiche
Informationen. Der 3. Treffer sogar den gesamten Code.
DerProgrammierer78 hat geschrieben:Ich denke ich habe das Problem gelöst ...
... sprach's und machte sich aus dem Staub ohne auch nur einen Hinweis
darauf zu hinterlassen, der anderen bei ähnlichen Problemen hilfreich sein
könnte.

manmanman...

Verfasst: 09.08.2007 17:25
von DerProgrammierer78
Hallo Kaeru Gaman,

Ich dachte ich hätte das Problem wie folgt gelöst:

Code: Alles auswählen

Repeat
    Event = WaitWindowEvent()
    
    Select Event
      Case #WM_HOTKEY
        Select wParam
          Case HotkeyStrgF5
          
          Case HotkeyStrgX
      
          Case HotkeyStrgC
          
          Case HotkeyStrgV
        
        EndSelect
    endselect
Until Event = #PB_Event_CloseWindow
Ich habe hier im Forum gelesen, dass kiffi geschrieben hat, dass man F5 nicht als Hotkey nehmen kann... Also habe ich es durch STRG+F5 ersetzt. Er richtet alle Hotkeys ein und sie funktionieren auch ...

Nur habe ich nun das Problem, dass er zwar bei Case #WM_HOTKEY erkennt, dass es sich um hotkeys handelt ... aber die Variable wParam kann ich irgendwie nicht auslesen ...

Und wenn ich die Funktion aufrufe, die ich zuerst benutzt habe (habe die aus dem Forum hier), dann verstehe ich eins nicht ...

Ich habe da Procedure HotkeyCallback(hwnd, msg, wParam, lParam) ... also erwartet er vier Parameter .... aber mit SetWindowCallback(@HotkeyCallback(),#Hauptfenster) übergebe ich doch nur zwei ???

Und damit komme ich gerade nicht klar ...