Почему не работают функции WINAPI: HideCaret, ShowCaret, ShowCursor, SetCursor?

 

Попытка применить в советнике библиотечные функции WINAPI

HideCaret(int hWnd) - скрыть курсор,

ShowCaret(int hWnd) - показать курсор,

ShowCursor(int bShow) - скрыть и показать курсор,

SetCursor(int hCur) - установить форму курсора

не дают ни ошибки, ни обещанного результата.

Пример. Для тестконтроля я использовал простейший код:

#import "user32.dll"

int GetCursor(); //handle текущего кусора
int HideCaret(int hWnd); //скрывает курсор
int ShowCaret(int hWnd); //показывает курсор

#import

int hCursor=GetCursor();

HideCaret(hCursor); //скрывает курсор
Sleep(5000);
ShowCaret(hCursor); //показывает курсор

Не работает. Может быть, есть какие-то особенности в применении этих функций в МТ4?

Не знаю, можно ли использовать для обозначенных целей встроенную WinUser32.mqh?

Буду признателен за ответ знатоков.

 
Необходимо отлавливать окна в терминале и плясать от этих окон. на прямую обратится к хендлу окна не получится.
 

Сделать можно фсё, останавливает цена вопроса.

Из любопытства - к чему такие потуги, просто украсить торговый терминал ?

Судя по объявлению функций опыт программирования в виндах отсутствует,

а без этого в это случае никак.

 
Valio писал(а) >>

Судя по написанию функций опыт программирования в виндах отсутствует,

а без этого в это случае никак.

Хорошо бы, что б по сути... А опытные люди странным образом когда-то были неопытными, работой опыт нажили... И какой же Вы умный, что Вы по двум строчкам кода определяете квалификацию. На бирже так же дела?

 
HIDDEN писал(а) >>
Необходимо отлавливать окна в терминале и плясать от этих окон. на прямую обратится к хендлу окна не получится.

Спасибо. Если можно, чуть подробнее об "окна отлавливать".

 

Сделать можно всё, это точно. Сам недавно написал библиотеку, с применением WinAPI, для автоматизации торговли, в случае, когда автоматическая торговля запрещена. Библиотека просто вызывает нужные менюшки, отправляет и редактирует ордера через пользовательский интерфейс, в обход прямого вызова торговых функций. Приведённых Вами функций не использовал. Но и со своими тоже много глюков ловил. И глюки были на уровне паранормальных :-). Некоторые так и не получилось локализовать, хорошо, что есть обходные, рабочие, пути. Зато теперь автоматическая торговля, при её запрете, прям из mql советника, безо всяких сторонних DLL.

Не могу представить в каком случае понадобилось скрывать и показывать курсор для редактирования текста (На сколько знаю, HideCaret(int hWnd) и ShowCaret(int hWnd) служат именно для этого).

Про WinUser32.mqh могу добавить, что всегда использовал свои описания всех используемых API функций, переписанных с сишных хедеров виндового SDK, так как, во первых в WinUser32.mqh мало что есть, во вторых бывает необходимость вызова некоторых функции с разными описаниями (прототипами). А так как перегрузки функций в mql4 нету (незнаю как там в mql5...) то пришлось её делать самому, в обход, применяя разные прототипы для одних и тех же функций.

 

А о каком курсоре разговор?

 
Вполне возможно, что эти функции не будут работать без последней версии .NET.
 
Zhunko писал(а) >>
Вполне возможно, что эти функции не будут работать без последней версии .NET.

Не из-за этого.

 
Похоже, что действие функции распространяется только на окно из которого она вызывается, а у скрипта в МТ нет окна и это правильно.
 
dokpiknik писал(а) >>

И какой же Вы умный, что Вы по двум строчкам кода определяете квалификацию. На бирже так же дела?

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

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