|
|
|
ХР и перерисовка окон
|
|||
|---|---|---|---|
|
#18+
Программа выполняет какие-то действия, при этом рисует на окне (диалога) прОгресс и текст. Обнаружилась такая неприятная особенность (видимо, под ХР и выше): если свернуть-развернуть это окно во время работы или перекрыть на время другим окном, то потом ни прОгресс, ни надписи не перерисовываются. Так и остаются такими, как на момент перекрытия. В чём тут дело и как с этим бороться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2007, 17:38 |
|
||
|
ХР и перерисовка окон
|
|||
|---|---|---|---|
|
#18+
в программе похоже update (или redraw) забыли повесить. вроде как под сишными интерфесами такое бывает. хотя могу ошибаться. аффтопитезь: объект либо именован, либо не существует ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2007, 10:42 |
|
||
|
ХР и перерисовка окон
|
|||
|---|---|---|---|
|
#18+
Invalidate() ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2007, 15:39 |
|
||
|
ХР и перерисовка окон
|
|||
|---|---|---|---|
|
#18+
Может быть я идиот, но я не дебил (с) Делал и Invalidate(), и RedrawWindow() со всеми возможными параметрами, UpdateWindow(). И никакого толка. Хотя, между нами говоря, оно и само должно бы понимать, что ему надо перерисоваться. ----------------- Получаются и более неприятные эффекты: если окно с прогрессом во время работы (когда оно не хочет перерисовываться) сдвинуть мышкой, то их становится 2! и по окончании процесса, когда программа прячет это окно, одно из них остаётся! ----------------- Помогает только DispatchMessage(), а мне этот метод неприятен, не люблю без необходимости лазить в кишки системы. И раньше (до ХР?) так не было, т.е. видимо кто-то решил сообщения о необходимости перерисовки игнорировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 11:39 |
|
||
|
ХР и перерисовка окон
|
|||
|---|---|---|---|
|
#18+
Надо думать, что программы выполняет эти какие-то действия в потоке, оставляя основному возможность что-то где-то рисовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 11:49 |
|
||
|
ХР и перерисовка окон
|
|||
|---|---|---|---|
|
#18+
> Надо думать, что программы выполняет эти какие-то действия в потоке, оставляя основному > возможность что-то где-то рисовать? Скорее нет, чем да. Специально никакой многопоточности нет. Нужен этот прогресс только чтобы юзер не скучал (а я знал, какая стадия сколько работает). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 11:52 |
|
||
|
ХР и перерисовка окон
|
|||
|---|---|---|---|
|
#18+
Ой Вэй> Надо думать, что программы выполняет эти какие-то действия в потоке, оставляя основному > возможность что-то где-то рисовать? Скорее нет, чем да. Специально никакой многопоточности нет. Нужен этот прогресс только чтобы юзер не скучал (а я знал, какая стадия сколько работает). Ну дык. Сами заняли основной поток, а потом удивляетесь, что окно не перерисовывается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 11:54 |
|
||
|
ХР и перерисовка окон
|
|||
|---|---|---|---|
|
#18+
казалось бы... The SendMessage member function calls the window procedure directly and does not return until that window procedure has processed the message. Не говоря уже о том, что под 98/2000 этой пробемы не наблюдалось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 11:59 |
|
||
|
ХР и перерисовка окон
|
|||
|---|---|---|---|
|
#18+
Ой ВэйНе говоря уже о том, что под 98/2000 этой пробемы не наблюдалось.хоть сейчас научишься нормально писать. Лучше поздно, чем никогда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 12:05 |
|
||
|
ХР и перерисовка окон
|
|||
|---|---|---|---|
|
#18+
> хоть сейчас научишься нормально писать. Лучше поздно, чем никогда. Спасибо, дарагой, глубоко проник в вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 12:06 |
|
||
|
ХР и перерисовка окон
|
|||
|---|---|---|---|
|
#18+
хз, в VB есть DoEvents она возвращает компу управление, не всегда полезная штука (при работе с сетью, например), но форму всегда обновляет. может и в си что-нить есть. аффтопитезь: объект либо именован, либо не существует ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 12:52 |
|
||
|
ХР и перерисовка окон
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 14:37 |
|
||
|
ХР и перерисовка окон
|
|||
|---|---|---|---|
|
#18+
Ой ВэйИ раньше (до ХР?) так не было, т.е. видимо кто-то решил сообщения о необходимости перерисовки игнорировать. Ты уверен, что сохраняеш параметры прОгресса и текста (в твоём случае) для перерисовки, при получении сообщения WM_PAINE. Незнаю как в 98/2000, но в XP перерисовка объектов, которые сами не умеют перерисовыватся (VCL), ложится на плечи разработчика. Да и в VCL, если ты напишиш например Panel->Canvas->TextOut("SOME TEST"); то при сворачивании и разворачивании текст пропадёт. Тоесть объект который необходимо перерисовать, должен "знать" как и что ему перерисовывать. Лучший друг програмиста - пример. Пример из книги "Delphi. Трюки и эффекты" Просто пример КАК надо перерисовывать даже самые простые объекты... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 16:39 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34340460&tid=2029399]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
205ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 250ms |
| total: | 546ms |

| 0 / 0 |
