|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Tastenkombinationen/Shortcuts?!?
Hi Leute,
leider findet man zu diesem Thema sehr sehr wenig im Netz. Kann mir einer vllt kurz nen Code zeigen wie ich ne Tastenkombi wie z.B shift+A generieren kann???!??? einzelnde Buchstaben bekomm ich hin Code:
#define HOTKEY_O = 79;//natürlich ganz oben deklariert if(id==CHARTEVENT_KEYDOWN && lparam == 79) |
|
|||
Wenn du Keycodes suchst für OnChartevent() hilft sicher VirtualKeys.mqh weiter.
Findest du sicher im Netz. Falls du Tasten simulieren möchtest geht das über WINAPI |
|
|||
Hi Kronenchakra,
danke für die Info, da ich kein Programmierer bin, weiß ich ned wie man mit WINAPI arbeitet,hatte noch nie damit zu tun. Lerne viel durch Learning by Doing ich hab aber ne einfache Form im Netz gefunden : Code:
bool shift_pressed_B = false; if (id == CHARTEVENT_KEYDOWN) if (shift_pressed_B == false && lparam == 16) shift_pressed_B = true; if (shift_pressed_B == true &&lparam == 66) { shift_pressed_B = false; } |
|
|||
Dann ist ja alles bestens
|
|
|||
Hey Kronenchakra,
leider is mein weg leider nicht förderlich, denn wenn lparam mit der Mausposition im Chart übereinstimmt wird auch dann die Tastenkombination ausgeführt, was ja eig nicht sein sollte. Dachte ich find was über die VirtualKeys.mqh aber leider fehlanzeige. Kannst du mir einen kleinen Tipp geben wie ich das hin bekomme?! eventuell Tutorials oder ein kleines Codebeispiel würd mir schon weiterhelfen. LG Trader |
|
|||
Code:
//+------------------------------------------------------------------+ //| KeyTest.mq5 | //+------------------------------------------------------------------+ #property indicator_chart_window #property indicator_plots 0 int OnInit() { return(INIT_SUCCEEDED); } int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { return(rates_total); } //mogliche Chartevents //CHARTEVENT_KEYDOWN — event of a keystroke, when the chart window is focused; //CHARTEVENT_MOUSE_MOVE — mouse move events and mouse click events (if CHART_EVENT_MOUSE_MOVE=true is set for the chart); //CHARTEVENT_OBJECT_CREATE — event of graphical object creation (if CHART_EVENT_OBJECT_CREATE=true is set for the chart); //CHARTEVENT_OBJECT_CHANGE — event of change of an object property via the properties dialog; //CHARTEVENT_OBJECT_DELETE — event of graphical object deletion (if CHART_EVENT_OBJECT_DELETE=true is set for the chart); //CHARTEVENT_CLICK — event of a mouse click on the chart; //CHARTEVENT_OBJECT_CLICK — event of a mouse click in a graphical object belonging to the chart; //CHARTEVENT_OBJECT_DRAG — event of a graphical object move using the mouse; //CHARTEVENT_OBJECT_ENDEDIT — event of the finished text editing in the entry box of the LabelEdit graphical object; //CHARTEVENT_CHART_CHANGE — event of chart changes; //CHARTEVENT_CUSTOM+n — ID of the user event, where n is in the range from 0 to 65535. //CHARTEVENT_CUSTOM_LAST — the last acceptable ID of a custom event (CHARTEVENT_CUSTOM +65535). void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { if(id==CHARTEVENT_OBJECT_CLICK) { Print("Objectname: ",sparam," wurde angeclickt"); } if(id==CHARTEVENT_CLICK) { Print("Auf den Chart geclickt"); } if(id==CHARTEVENT_KEYDOWN) { Print(lparam); if(lparam==0x26) Print("VK_UP"); else if(lparam==0x28) Print("VK_DOWN"); else if(lparam==0x43) Print("VK_C"); else if(lparam==0x46) Print("VK_F"); else if(lparam==0x54) Print("VK_T"); else if(lparam==0x5A) Print("VK_Z"); else if(lparam==0x13) Print("VK_PAUSE"); } } Hoffentlich kannst du's brauchen. Grüße Otto |
|
|||
werd ich gleich mal versuchen danke schon mal für deine Mithilfe Otto!!!
|
|
|||
hat leider nix gebracht, wie davor werden aktionen ausgeführt wenn der lparam-wert
mit einem Buchstabenwert matched..... vom Ausschlußprinzip liegt es entweder an dieser Zeile oder ich hab einfach keine Ahnung vom richtigen proggen Code:
if (id == CHARTEVENT_KEYDOWN) if (shift_pressed_B == false && lparam == 0x10)//Shift wurde gedrückt shift_pressed_B = true; wie die untere hier Code:
if (shift_pressed_B == true &&lparam == 0x42) ja auch automatisch true und werden bei einem match mit lparam ausgelößt ich versuch mal alle variablen auf false zu setzten nach jeder Tastenkombi, wenns dann auch ned klappt ,dann brauch ich nen neuen logikaufbau .-. |
|
|||
Wenn du mit dem Code spielst den ich hier gepostet habe wirst du sehen, daß die Tastenanschläge der Reihe nach abgearbeitet werden.
Also nicht Ctrl+A gleichzeitig drücken, sondern zuerst Ctrl dann A. Detto mit shift. Mit boolschen Variablen wie CtrlWasPressed arbeiten und die wieder bei einer anderen Taste auf false setzten. Mit Alt geht nix, ebenso Leertast und Enter, Funktionstasten sind belegt Viel Erfolg Otto |
|
|||
Hey Otto,
ja das mit den Tastenschlägen war auch bei meinem Code so, Sparam gibt nen Wert wieder wenn man eine Taste länger hält, mit dem könnte man eventuell arbeiten, aber idR. kommt man da nicht hin weil man mit den fingern schneller ist, als der Wert zurück kommt vom MT4. Aber lag wirklich an den Codeschnipsel von mir , was auch völlig logisch ist -.- weil alle Tastenkombi´s ja dann frei geschaltet sind. Danke für deine Hilfe/Interesse LG Trader |
Lesezeichen |
Stichworte |
mql4, programmierung, programmierung metatrader, programmierung mql4, shift+a, tastenbelegung |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|