WindowScreenShot в режиме "Фиксировать масштаб" вешает Metatrader

 
При попытке использовать WindowScreenShot в режиме фиксированного масштаба случаются довольно неожиданные вещи. Допустим, мы решили распечатать 20 пятиминутных графиков 320х200, отображающих дни января 2005 года. Ожидается, что будут сохранены соответствующие графики в соответствующем масштабе. На деле получаем куски пустого графика с совершенно невразумительными вертикальными шкалами (от минус 2 до 5 или от -80 до -300). После окончания работы скрипта наблюдаем полностью съехавшую вертиальную шкалу графика.

Если же мы решили напечатать несколько сотен таких графиков - то MT просто виснет(!).

Хотелось бы исправления подобной ситуации.


P.S. Судя по описанию нового релиза, ошибка в StringGetChar с выводом отрицательных кодов пока не исправлена?
 
1. Не могли бы Вы по шагам описать Ваши действия? Мы не можем воспроизвести проблему.
Проблема именно в массовом выводе? Или в масштабе отображения?
Откуда вызывается WindowScreenShot: из эксперта, скрипта или индикатора?

2. StringGetChar теперь не возвращает отрицательных значений.
 
За StringGetChar - большое спасибо (хотя в документации, насколько я вижу, пока еще по-прежнему в примере StringGetChar("abcdefgh", 3) = "с").

Что касается WindowScreenShot - вот тестовый скрипт.

int start() {
	datetime dt_start = D'2005.01.01';
	for (int i=0; i<100; i++) {
		datetime dt = dt_start + i*60*60*24;
		int b = iBarShift(NULL,0,dt,false);		
		WindowScreenShot("screenshots\\test_" + i + ".gif",400,200,b);
	}
  return(0);
}



Возьмем, к примеру, минутки фунта в максимально сжатом виде (хотя тот же результат получаем и в других таймфреймах и валютах). Этот скрипт успешно отрабатывает в автомасштабируемом режиме, и выдает 100 скриншотов кусочков соответствующих дней. Однако, если мы в свойствах графика установим "Фиксировать масштаб 1:1", то MT виснет, успев выдать 18 изображений.

Посмотрев на сгенерированное, обнаруживаем



Проанализировав все 18 изображений, отмечаем дополнительно, что наблюдается нечто вроде раскачки: чем дальше, тем больше в отрицательную область уходит шкала (последние изображения - в районе минус миллиона). Возможно, дело в переполнении. Так или иначе, картина загадочная )). Надеюсь на помощь в данном вопросе.

Кстати, по поводу вообще масштабирования - после добавления давно необходимого WindowPriceMin/Max нет ли возможности добавить функции установки данных значений? т.е. SetWindowPriceMin/Max. То же - и касательно FirstVisibleBar. На сегодняшний день, чтобы спозиционировать окно по горизонтали, приходится эмулировать нажатие VK_RETURN, вызывать "быструю навигацию", искать дочернее окно едитбокса... winapi-тягомотина без гарантированного результата, ибо позиционируется окно по центру (точнее, по нижнему треугольнику-маркеру), и нужно дополнительно вычислять дельту и пр. А отпозиционировать окно по вертикали вообще малореально.

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

 
Зависание устранили. Спасибо.
Причина обращения: