![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема отрисовки ProgressBar в XP ! [D7, WinXP]
VID © (2005-12-02 12:29:00)Ситуация такова: Есть просто приложение - форма, кнопка на ней и ProgressBar.
При нажатии кнопки, выполняем какой нибудь цикл, внутри которого происходит инкрементирование переменной i: Integer, и следовательно постоянно меняем значение Position у ProgressBar'a.
Запускаем приложение, нажимаем кнопку, затем переключаемся на другое приложение, и снова возвращаемся к нашему приложени. И...
- Если приложение запущено в XP (sp2) из-под дельфи, то прогресбар продолжает нормально отрисовываться.
- Если приложение запущено в XP не из-под дельфи, а просто так, то ничего уже не прорисовывается, все выглядит зависшим, хотя процесс конечно же продолжает свою работу.- Если приложение запущено в Win98 или Win2000 (не важно из-под дельфи или нет), то прогресбар нормально отрисовывается.
Кто-нибудь знает, что делать и как мне бороться с этим глюком, связанным с XP ?
PS: Тестировалось на XP SP2, т.к. просто XP или XP SP1 у меня не было.
alex_*** (2005-12-02 18:04:00) [1]хотелось бы применить какое-нить менее кардинальное решение.
Application.ProcessMessages() прямо жесть. Меняет ситуацию кардинально
alex_*** (2005-12-02 18:02:00) [2]какие ужасные винды.... не хотят отрисовывать ProgressBar!! Билли специально зашил в проверку на пргорамму писанную на Дельфи, чтоб переходили на VS
ДНО (2005-12-02 16:24:00) [3]// Помимо того, что ничего не отрисовывается, это приложение можно еще и передвигать за заголовок.
заголовками и "тасканиями" ведает твоя windows, так что все в порядке вещей.
//С ProcessMessages заморачиваться не хочется.
это как соблаговолите понимать?
//В конце-концов это ошибка WinXP SP2 а не моя.
Вы так уверены? а очередь сообщений вы проверяите?
VID (2005-12-02 14:38:00) [4]С ProcessMessages заморачиваться не хочется.
В конце-концов это ошибка WinXP SP2 а не моя.
И хотелось бы применить какое-нить менее кардинальное решение.
SendMessage(Form1.Handle, WM_PAINT, 0, 0);
не помог. И вообще, когда после переключения к другому приложению, обратно возвращаешься к своему - у него ваще крышу сносит: Помимо того, что ничего не отрисовывается, это приложение можно еще и передвигать за заголовок. Причем (SendMessage(Form1.Handle, WM_PAINT, 0, 0)) тут не причем, так и без него бывает.
-=SPIDER=- (2005-12-02 14:13:00) [5]Пробовал в цикле и при появлении формы вызывать:
SendMessage(Form1.Handle, WM_PAINT, 0, 0);
ДНО (2005-12-02 14:12:00) [6]Application.ProcessMessages;
VID (2005-12-02 14:07:00) [7]Удалено модератором
Примечание: Создание пустых сообщений