Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Sasha_builder Гость
|
Добавлено: Пн Янв 07 2002 03:42 Заголовок сообщения: Помогите начинающему! Можно ли форсировать WM_PAINT сообщение в Builder-3? |
|
|
Мое приложение не "чинит" свое окно после того как другие приложения перекрывают его частично или полностью. Что делать? В справочниках, приложение вроде должно посылать ОС сообщение WM_PAINT, но видимо, не посылает.
????
Help!
Саша |
|
Вернуться к началу |
|
|
Beguin Гость
|
Добавлено: Ср Янв 09 2002 15:47 Заголовок сообщения: Есть метод Update (+) |
|
|
RTFM
Если же процесс чем-то занят (например, очень длинное вычисление), то сообщения все равно проходить не будут. Тогда нужно вызвать Application-ProcessMessages(), типа:
while(Пива нет) { try { Холодильник-GetПиво(); } catch(...) { Application-ProcessMessages(); Sleep(500); } } |
|
Вернуться к началу |
|
|
Sasha_builder Гость
|
Добавлено: Ср Янв 09 2002 18:15 Заголовок сообщения: Re: Есть метод Update (+) |
|
|
Beguin,
прежде всего спасибо за ответ. У меня действительно очень длинные вычисления. Программа при этом ни на что не реагирует (невозможно, например, перетащить окно, об изменении размеров не говорю, потому что окно задано жестко), кнопки меню не активизируются при попытке их нажать, единственное что можно - это закрыть приложение нажав "крест" в системном меню.
Application-ProcessMessages()
помогло в том плане, что окно можно теперь перемещать по экрану. При нажатии меню "File" появляется опция "exit", но ее нажатие к завершению не приводит.
Добавление в код
Form1-Update()
к "перерисовыванию" окна также не приводит. Функцию Sleep(...) я в Help не нашел, что это?
Не знаю, ясно ли я изложил свои жалобы.
Можно ли все это излечить?
Саша |
|
Вернуться к началу |
|
|
Beguin Гость
|
Добавлено: Чт Янв 10 2002 17:06 Заголовок сообщения: Re: Есть метод Update (+) |
|
|
Sleep - это из трейдов.
Если идут большие вычисления, а UI программы должен при этом работать, то лучше их засунуть в отдельный трейд.
Form1-Update() - это самое простое, что можно сделать. В данном случае оно не работает, поскольку приложение считается занятым, и до его очереди сообщений дело не доходит.
Exit не будет выполняться по той же причине. Пока не закончится расчет приложение не остановится. Надо остановить расчет.
Пишите на мыло. |
|
Вернуться к началу |
|
|
|