ShowMessage не в основном потоке

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

ShowMessage не в основном потоке

Сообщение Climber » 12.02.2010 09:36:06

Собственно, два вопроса:
1. Я немножко занимаюсь извращениями - пишу тесты для своей программы на fpcunit. С точки зрения теории тестирования это не совсем корректное использование инструмента, но другого у меня все равно нет, а что-то делать надо. В программе появляется модальное окно, которое должен заполнить пользователь. В тестовом окружении я перед вызовом ShowModal создаю дополнительный поток, в котором заполняю поля и жму кнопку. В результате может появиться окно сообщения ShowMessage. Мне его надо из второго потока закрыть. Как - я не знаю. Пробовал найти окно через FindWindow (искал по заголовку. Заголовок окна - это название exe файла программы без ".exe") и послать окну WM_CLOSE - завершается все приложение (у меня есть идеи, почему так происходит, а вот чем лечить - нет идей).
2. Создаю поток, вызываю в нем ShowMessage. Получаю ошибку: "CheckSynchronize called from non-main thread." То есть это вообще никак не сделаешь, или я чего-то не знаю?

В принципе есть решение - переписать все без использования модального окна, и я так и сделаю. Но все равно интересно, вдруг в будущем пригодится.
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Re: ShowMessage не в основном потоке

Сообщение dunin » 12.02.2010 09:47:04

Climber писал(а):...В результате может появиться окно сообщения ShowMessage. Мне его надо из второго потока закрыть....

Первое, что пришло в голову: вызываем не ShowMessage, а Виндусовский MessageBox и первым параметром ставим хендл не приложения, а 0. Тогда при закрытии должно схлопнуться только окно сообщения. Теоретически. Могу ошибаться. Как под линуксом вообще не представляю.
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 47

Рейтинг@Mail.ru