Блокировался текст выводимый в самом начале программы, без циклов.
Эти же функции всегда правильно работали в AutoCAD2005-2012.
Похоже, что разработчики блокируют вывод на консоль и текст обновляется только
по завершении команды или при выполнении функции ввода пользовательских данных.
Добавил ваш код в программу - помогло. Спасибо.Текст стал выводиться, правда несколько странно, но хорошо, что уже хоть так работает.
Попробовал добавить задержку после вывода текста, но перед функцией обработки сообщений - текст стал иногда выводиться.
Чтобы не ставить задержки в программе - вынужден был поставить функцию обработки очереди сообщений в цикле функции, где выполняются вычисления.
В большинстве случаев текст стал выводиться, но были случаи когда функция выполнялась порядка 40 сек., но текст выводился не всегда.
При этом функция OnIdleAcadInternal() выполнялась несколько тысяч раз.
Для проведения экспериментов добавил в самом начале программы следующий код
for (int i=0; i < 900; i++) {
acutPrintf(_T("\n>>> Sleep = %i"), i*10); //строка отображает пройденное время в миллисекундах
Sleep(10); //задержка 10 миллисекунд
OnIdleAcadInternal();
}
Выгрузил все лишние приложения, оставил только AutoCAD
При запуске функции - экран обновлялся в разное время
Ниже показан номер теста и время [миллисекунды], в которое выводился текст (первые 2 значения)
1) 270, 1110
2) 890, 1710
3) 880, 2100
4) 580, 1450
Поэтому выполнение функции OnIdleAcadInternal() сразу после вывода текста, без задержки,
отрабатывать не будет никогда, а если ставить задержку - то как повезет, текст может и не появиться.
Интересно почему при выполнении команд ввода пользовательских данных задержку вводить не требуется? При этом все сразу выводится.
Может имеется другой механизм обновления данных? Например функция вывода в консоль данных, которые где-то
накапливаются и ждут указания программы, об их обновлении?
По результатам теста видно - что данные уже выведены (выполнено несколько функций acutPrintf) , но в очередь сообщений данные еще не попали.