powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / ХР и перерисовка окон
14 сообщений из 14, страница 1 из 1
ХР и перерисовка окон
    #34337401
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программа выполняет какие-то действия, при этом рисует на окне (диалога) прОгресс и текст. Обнаружилась такая неприятная особенность (видимо, под ХР и выше): если свернуть-развернуть это окно во время работы или перекрыть на время другим окном, то потом ни прОгресс, ни надписи не перерисовываются. Так и остаются такими, как на момент перекрытия.

В чём тут дело и как с этим бороться?
...
Рейтинг: 0 / 0
ХР и перерисовка окон
    #34338114
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в программе похоже update (или redraw) забыли повесить.

вроде как под сишными интерфесами такое бывает.

хотя могу ошибаться.

аффтопитезь: объект либо именован, либо не существует
...
Рейтинг: 0 / 0
ХР и перерисовка окон
    #34338384
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Invalidate() ?
...
Рейтинг: 0 / 0
ХР и перерисовка окон
    #34340373
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть я идиот, но я не дебил (с)

Делал и Invalidate(), и RedrawWindow() со всеми возможными параметрами, UpdateWindow(). И никакого толка.

Хотя, между нами говоря, оно и само должно бы понимать, что ему надо перерисоваться.

-----------------
Получаются и более неприятные эффекты: если окно с прогрессом во время работы (когда оно не хочет перерисовываться) сдвинуть мышкой, то их становится 2! и по окончании процесса, когда программа прячет это окно, одно из них остаётся!

-----------------
Помогает только DispatchMessage(), а мне этот метод неприятен, не люблю без необходимости лазить в кишки системы.

И раньше (до ХР?) так не было, т.е. видимо кто-то решил сообщения о необходимости перерисовки игнорировать.
...
Рейтинг: 0 / 0
ХР и перерисовка окон
    #34340407
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо думать, что программы выполняет эти какие-то действия в потоке, оставляя основному возможность что-то где-то рисовать?
...
Рейтинг: 0 / 0
ХР и перерисовка окон
    #34340415
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Надо думать, что программы выполняет эти какие-то действия в потоке, оставляя основному
> возможность что-то где-то рисовать?
Скорее нет, чем да. Специально никакой многопоточности нет.
Нужен этот прогресс только чтобы юзер не скучал (а я знал, какая стадия сколько работает).
...
Рейтинг: 0 / 0
ХР и перерисовка окон
    #34340433
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой Вэй> Надо думать, что программы выполняет эти какие-то действия в потоке, оставляя основному
> возможность что-то где-то рисовать?
Скорее нет, чем да. Специально никакой многопоточности нет.
Нужен этот прогресс только чтобы юзер не скучал (а я знал, какая стадия сколько работает).
Ну дык. Сами заняли основной поток, а потом удивляетесь, что окно не перерисовывается.
...
Рейтинг: 0 / 0
ХР и перерисовка окон
    #34340460
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
казалось бы...
The SendMessage member function calls the window procedure directly and does not return until that window procedure has processed the message.

Не говоря уже о том, что под 98/2000 этой пробемы не наблюдалось.
...
Рейтинг: 0 / 0
ХР и перерисовка окон
    #34340486
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой ВэйНе говоря уже о том, что под 98/2000 этой пробемы не наблюдалось.хоть сейчас научишься нормально писать. Лучше поздно, чем никогда.
...
Рейтинг: 0 / 0
ХР и перерисовка окон
    #34340492
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> хоть сейчас научишься нормально писать. Лучше поздно, чем никогда.
Спасибо, дарагой, глубоко проник в вопрос.
...
Рейтинг: 0 / 0
ХР и перерисовка окон
    #34340641
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хз, в VB есть DoEvents она возвращает компу управление, не всегда полезная штука (при работе с сетью, например), но форму всегда обновляет.

может и в си что-нить есть.

аффтопитезь: объект либо именован, либо не существует
...
Рейтинг: 0 / 0
ХР и перерисовка окон
    #34347205
MAX2002
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
   Application->ProcessMessages;
...
Рейтинг: 0 / 0
ХР и перерисовка окон
    #34347785
Фотография Termi_uc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой ВэйИ раньше (до ХР?) так не было, т.е. видимо кто-то решил сообщения о необходимости перерисовки игнорировать.

Ты уверен, что сохраняеш параметры прОгресса и текста (в твоём случае) для перерисовки, при получении сообщения WM_PAINE.

Незнаю как в 98/2000, но в XP перерисовка объектов, которые сами не умеют перерисовыватся (VCL), ложится на плечи разработчика. Да и в VCL, если ты напишиш например Panel->Canvas->TextOut("SOME TEST"); то при сворачивании и разворачивании текст пропадёт.
Тоесть объект который необходимо перерисовать, должен "знать" как и что ему перерисовывать.

Лучший друг програмиста - пример.
Пример из книги "Delphi. Трюки и эффекты"
Просто пример КАК надо перерисовывать даже самые простые объекты...
...
Рейтинг: 0 / 0
ХР и перерисовка окон
    #34347798
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Termi_uc
Безусловно, common controls (не owner draw и не custom draw) умеют рисоваться сами.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / ХР и перерисовка окон
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]