Форум » GUI » Минигуи и терминалка хХарбора .... ? » Ответить

Минигуи и терминалка хХарбора .... ?

Andrey: Сделал главное меню на МиниГуи. На нем несколько кнопочек, по нажатию - запускает терминалку на хХарборе. Если на главной форме МиниГуи выводится (горит) надпись с мерцанием (объект LABEL свойство BLINK .T. ) то в терминалке блокируется обработка клавиш, т.е. по нескольку раз приходиться нажимать.... Начинает "дурить" - nKeyAch := LASTKEY(INKEY_KEYBOARD)... Если отключить BLINK - то проблем нет ! В чём проблема ?

Ответов - 10

Петр: Andrey пишет: В чём проблема ? Проблема в реализации режима мерцания. Ни _ShowControl, ни _HideControl, вызываемые по таймеру каждые 500 ms, не учитывают текущее активное окно.

Andrey: Петр пишет: Проблема в реализации режима мерцания. Ни _ShowControl, ни _HideControl, вызываемые по таймеру каждые 500 ms, не учитывают текущее активное окно. И что теперь, нужно править исходники МиниГуи чтобы этот "глюк" убрать ?

Петр: Andrey пишет: И что теперь, нужно править исходники МиниГуи чтобы этот "глюк" убрать ? Это нужно Григория спросить, считается это глюком или нет. Я так понял, до сих пор никто и не жаловался особо.


Andrey: Петр пишет: Я так понял, до сих пор никто и не жаловался особо. Да у меня уже года 2 такая фигня идёт... Всё руки не доходили... Мигающая надпись светиться у меня в одном случае, когда нужно обновить прогу с сайта. А сейчас хотел сделать подсветку для юзера в другом месте и опять терминалка тормозит, клавиши функциональные заедают, по 3-5 раз клавишу нажимать надо, пока среагирует...

Haz: Andrey пишет: И что теперь, нужно править исходники МиниГуи чтобы этот "глюк" убрать ? Закоменти вызов DoEvents() в конце исходника _ShowControl() и пересобери библиотеку Хотя не уверен, у меня этот эффект не удалось воспроизвести.

SergKis: Haz пишет:Закоменти вызов DoEvents() в конце исходника _ShowControl() и пересобери библиотеку Для пробы (так проще) поставь свой TIMER на окно (вместо blink .T.) и в нем вызывай по очереди ShowWindow( <hWnd>, SW_HIDE ) ShowWindow ( <hWnd> ) где hWnd - handle label сообщения или устанавливай значение в label "" и "нужный текст" по очереди SetWindowText ( <hWnd>, value )

Andrey: SergKis пишет: Для пробы (так проще) поставь свой TIMER на окно (вместо blink .T.) и в нем вызывай по очереди Классная идея ! Спасибо !

Andrey: Вопрос по взаимодействию терминалки и МиниГуи. В терминалке хХарбора делаю (добавляю) запись в базу-журнала. Как в МиниГуи отловить событие записи в базу-журнала терминалки. Сейчас делаю это по таймеру (1,2... минуты). Но не хочется так. Может есть другие варианты ?

Dima: Andrey пишет: Как в МиниГуи отловить событие записи в базу-журнала терминалки. По таймеру например , можно чекать Lastrec() базы раз в 1 секунду , или какой то флаг выставлять (например пробнуть прикрутить мьютекс). Dima пишет: По таймеру например , можно чекать Lastrec() базы раз в 1 секунду Это я не дочитал ))

Петр: Andrey пишет: Вопрос по взаимодействию терминалки и МиниГуи. Если терминалка - это консольное (т.е. с текстовым интерфейсом (TUI)) приложение Windows, написанное с использованием xHarbour, а МиниГуи - графическое приложение, написанное на Harbour, использующее для построения графического интерфейса библиотеку MiniGUI, то взаимодействие между ними вполне вписывается в понятие межпроцессорное взаимодействие Используйте любой доступный вам метод из таблицы внизу этой статьи.



полная версия страницы