Как убрать отклик на клавиши BackSpace и Пробел? - страница 2

 

Пока что-то такое получается. Размещаем объекты на графике. Если нажимаем на объект можно прочитать его содержимое. Что-то такое как закладки. Но вот через текстовое поле работать с вводом получается не удобно. Если можно было бы организовать ввод текста в одну графическую картинку. Теперь немного проясняется.

Кому нужен код напишите. Работа будет выставлена в открытом доступе.

Как вариант думал сделать ввод в сплывающие окно. Но если удастся перехватывать клавиши и тормозить выполнение команды пробела и бэкспейс сразу решало бы все вопросы.

Теперь всё сводится к тому можно ли средствами Win API перехватывать команды клавиатуры и не давать выполнять терминалу. Кто-нибудь пробовал это делать? Смотрел в инете, но ничего интересного не нашёл. 

Всем спасибо.

 
Walerij75 #:
Найти доки по этому вопросу, думаю, труда не составит.

Пробовал искать никак ничего интересного не смог найти. Помогайте. :)

 
ROMAN KIVERIN #:

Пока что-то такое получается. Размещаем объекты на графике. Если нажимаем на объект можно прочитать его содержимое. Что-то такое как закладки. Но вот через текстовое поле работать с вводом получается не удобно. Если можно было бы организовать ввод текста в одну графическую картинку. Теперь немного проясняется.

Кому нужен код напишите. Работа будет выставлена в открытом доступе.

Как вариант думал сделать ввод в сплывающие окно. Но если удастся перехватывать клавиши и тормозить выполнение команды пробела и бэкспейс сразу решало бы все вопросы.

Теперь всё сводится к тому можно ли средствами Win API перехватывать команды клавиатуры и не давать выполнять терминалу. Кто-нибудь пробовал это делать? Смотрел в инете, но ничего интересного не нашёл. 

Всем спасибо.

Если уж WinAPI - то просто любым (почти любым) тулкитом делайте собственные окна и диалоги. 

 
Maxim Kuznetsov #:

Если уж WinAPI - то просто любым (почти любым) тулкитом делайте собственные окна и диалоги. 

Да, хорошее предложение. Возможно сделать маленькое окно, похожее на это. Потом по таймеру смотреть что с ним происходит.

Вопрос за малым как только это сделать. Помогайте. Опять моя слабая голова никак не тянет. Одна вода в инете или я просто не догоняю.

Кто-нибудь занет как сделать окно на MQL? Может кто-то делал? 

С помощью окна ввода получится интересное решение!

Всем спасибо.

 
ROMAN KIVERIN #:

Да, хорошее предложение. Возможно сделать маленькое окно, похожее на это. Потом по таймеру смотреть что с ним происходит.

Если с использованием DLL, то таймер не нужен. Все события будут доступны в самой DLL. А она уже будет слать события эксперту (индикатору) через OnChartEvent.

Вопрос за малым как только это сделать. Помогайте. Опять моя слабая голова никак не тянет. Одна вода в инете или я просто не догоняю.

Кто-нибудь занет как сделать окно на MQL? Может кто-то делал? 

Если на MQL, то в Indicators\Examples есть пример - SimplePanel.

 
Ihor Herasko #:

Здравствуйте Игорь. С Новым Годом.

Ihor Herasko #:

Если с использованием DLL, то таймер не нужен. Все события будут доступны в самой DLL. А она уже будет слать события эксперту (индикатору) через OnChartEvent.

Можно про это подробней? 

Ihor Herasko #:

Если на MQL, то в Indicators\Examples есть пример - SimplePanel.

Посмотрел пример этот, но это больше какая-то вольная композиция неизвестно зачем и для чего. В подокне явно не нужно так как будет загромождать график и подокно убирается только при закрытии индикатора. Хотелось бы чтобы ввод был в отдельное окно, либо в какой-то более адекватный элемент чем просто стандартный текстовый элемент.

Специальную DLL в которой будет вызываться это окно не очень хочется делать. На сколько я понимаю стандартными функциями Win API можно создавать окно и элементы управления. Это хотелось бы сделать. Задача простая, это маленькое окно с названием и текстовое поле. Всё больше ничего не надо. В идеале ещё кнопку закрытия.

Нашёл пример в скриптах из стандартных примеров. Но почему-то так и не смог запустить. Целый час провозился. Как я понял в этом примере простой вызов DLL функций.

Тупо сделать создание средствами Win API окна с кнопкой закрытия и полем для ввода текста. Опрашивать через таймер самого индикатора. Без DLL. Будет прекрасно.

Вопрос опять же остаётся как через Win API на mql сделать это окно с кнопкой и текстовым полем? Да, ну и чтобы оно на переднем плане плавало.

Как убрать отклик на клавиши BackSpace и Пробел?
Как убрать отклик на клавиши BackSpace и Пробел?
  • 2022.01.05
  • www.mql5.com
Посоветуйте что сделать? Хочу написать текстовый редактор...
 

А, кстати, только сейчас пришла мысль чтобы элементарный адекватный элемент для ввода текста вставлять на график. Тоже вариант. Вставлять средствами WinAPI и потом редактировать. Можно даже окно не создавать. Но с модальным окошком будет, конечно, интересней. 


 
ROMAN KIVERIN #:

А, кстати, только сейчас пришла мысль чтобы элементарный адекватный элемент для ввода текста вставлять на график. Тоже вариант. Вставлять средствами WinAPI и потом редактировать. Можно даже окно не создавать. Но с модальным окошком будет, конечно, интересней. 


#property copyright "Maxim A.Kuznetsov"
#property link      "https://www.luxtrade.tk"
#property version   "1.00"

#include <ATcl/ATcl.mqh>

string prefix="prostotak";
string button=prefix+".clickme";

ATcl *tcl=NULL;

int OnInit()
{
   tcl=new ATcl();
   EventSetTimer(1);
   tcl.Eval("package require Tk");     // require Gui
   tcl.Eval("wm withdraw .");          // hide top-level window
   // create and hide dialog windows
   tcl.Eval("toplevel .dialog");
   tcl.Eval("text .dialog.text");
   tcl.Eval("pack .dialog.text -fill both -expand yes");
   tcl.Eval("wm withdraw .dialog");
   tcl.Eval("wm protocol .dialog WM_DELETE_WINDOW { wm withdraw .dialog}");   // prevent window destroy
   // greetings 
   tcl.Eval(".dialog.text tag configure happy -font {{Arial Black} 12} -background green");
   tcl.Eval(".dialog.text insert 0.end {Happy new Year !} happy");
   ObjectCreate(0,button,OBJ_BUTTON,0,0,0);
   ObjectSetInteger(0,button,OBJPROP_XSIZE,200);
   ObjectSetInteger(0,button,OBJPROP_XDISTANCE,200);
   ObjectSetInteger(0,button,OBJPROP_YDISTANCE,200);
   ObjectSetString(0,button,OBJPROP_TEXT,"CLICK ME");
   return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason)
{
   delete tcl;
   EventKillTimer();
}

void OnTick()
{
   tcl.Update();
}

void OnTimer()
{
   tcl.Update();
}
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
   tcl.Update();
   if (id==CHARTEVENT_OBJECT_CLICK && sparam==button) OnClickMe();
   tcl.Update();
}
void OnClickMe()
{
   tcl.Eval("wm deiconify .dialog");
   tcl.Eval("raise .dialog");
}

С праздником !

 
Maxim Kuznetsov #:

С праздником !


С Новым Годом!


Что-то он прям сильно-сильно напугал. Сразу нужно спрашивать с чего это он так?

 
ROMAN KIVERIN #:


С Новым Годом!


Что-то он прям сильно-сильно напугал. Сразу нужно спрашивать с чего это он так?

пишет что библиотеки нет :-)

Причина обращения: