Hotkeys...

Anfängerfragen zum Programmieren mit PureBasic.
DerProgrammierer78
Beiträge: 126
Registriert: 24.10.2004 21:11
Wohnort: Ahlen

Hotkeys...

Beitrag 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:
Der Computer ist der beste Freund des Menschen.
Aber wer so viele Freunde hat wie ich vergrault damit jede Frau!!!!!!! ;-)
DerProgrammierer78
Beiträge: 126
Registriert: 24.10.2004 21:11
Wohnort: Ahlen

Beitrag 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 :(
Der Computer ist der beste Freund des Menschen.
Aber wer so viele Freunde hat wie ich vergrault damit jede Frau!!!!!!! ;-)
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Hotkeys...

Beitrag 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
a²+b²=mc²
DerProgrammierer78
Beiträge: 126
Registriert: 24.10.2004 21:11
Wohnort: Ahlen

Beitrag von DerProgrammierer78 »

Irgendwie klappt das nicht wie es soll :(
Der Computer ist der beste Freund des Menschen.
Aber wer so viele Freunde hat wie ich vergrault damit jede Frau!!!!!!! ;-)
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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.
a²+b²=mc²
DerProgrammierer78
Beiträge: 126
Registriert: 24.10.2004 21:11
Wohnort: Ahlen

Beitrag 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 ....
Der Computer ist der beste Freund des Menschen.
Aber wer so viele Freunde hat wie ich vergrault damit jede Frau!!!!!!! ;-)
DerProgrammierer78
Beiträge: 126
Registriert: 24.10.2004 21:11
Wohnort: Ahlen

Beitrag von DerProgrammierer78 »

Ich denke ich habe das Problem gelöst ... Danke :mrgreen:
Der Computer ist der beste Freund des Menschen.
Aber wer so viele Freunde hat wie ich vergrault damit jede Frau!!!!!!! ;-)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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...
a²+b²=mc²
DerProgrammierer78
Beiträge: 126
Registriert: 24.10.2004 21:11
Wohnort: Ahlen

Beitrag 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 ...
Der Computer ist der beste Freund des Menschen.
Aber wer so viele Freunde hat wie ich vergrault damit jede Frau!!!!!!! ;-)
Antworten