Re: Перерисовка окна
От: Paladinm  
Дата: 27.08.03 15:06
Оценка:
Здравствуй, Paladinm, Мы писали:

P>Например, при увеличении размеров формы вправо, во время самого процесса, панели еще не успевают перерисоваться, а контролы уже успевают.

P>Получается эффект, как будто контролы вылазят за границы формы.

P>Предполагаю, что во время изменения размеров окна, вместо одного просчета будущего расположения контролов, с учетом выравниваний и якорей, и одной их финальной отрисовкой, происходит многократная перериовка контролов при выравнивании.


Нашел не очень красивое решение (на этом же форуме...)
Размер окна я изменяю при помощи MoveWindow( ...)
Так вот, всем контролам, которые колбасятся делаем WM_SETREDRAW:
SendMessage( KolbasaCtrl.Handle, WM_SETREDRAW, 0, 0); // отмена перерисовки

MoveWindow( Handle, ...)                              // изменяем размеры окна

SendMessage( KolbasaCtrl.Handle, WM_SETREDRAW, 1, 0); // включение перерисовки
InvalidateRect( KolbasaCtrl.Handle, 0, false );       // рисуем контрол

— И все, после этого колбаса заканчивается.

Конечно, лучше бы в память все контролы отрисовывать...
Может кто-то знает как?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.