Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > LockWindowUpdate


Автор: Rennigth 21.1.2005, 13:18
есть большой проект который просто напичкан BitMapами и PNGшками, + 70% скиновых контролов. Сами понимаете прорисовывается это жуть медлено. Чтобы не мигало и нормальные были переходы с закладки на закладку и тд. используется функция LockWindowUpdate, но эта функция лочит только одно окно. в частных случаях этого достаточно но во первых другие приложения легко могут ее снимать(на пример тотже WinAmp рубит ее при активации), ну и в использовании неудобна... (где-нибудь в давно забытом классе стоит LockWindowUpdate(0) и кирдык). Вообщем вопрос: Может можно какнибудь сделать подобную функцию чтобы могла работать с множеством окон, и снимать этот Lock мог только я?
короче что - нибудь наподоби BeginUpdate -> EndUpdate способная работать с любыми окнами.

ну или есть ли какие - нибудь адьтернативы?

буду благодарен за любые советы и предложения.

p.s.: надеюсь понятно объяснил...

Автор: Akella 21.1.2005, 13:20
мощнее железо

Автор: s-mike 24.1.2005, 01:03
Код

unit ScrUtils;

interface

uses Windows, Messages;

procedure BeginScreenUpdate(HWND: THandle);
procedure EndScreenUpdate(HWND: THandle);

implementation

procedure BeginScreenUpdate(HWND: THandle);
begin
 SendMessage(HWND, WM_SETREDRAW, 0, 0);
end;

procedure EndScreenUpdate(HWND: THandle);
begin
 SendMessage(HWND, WM_SETREDRAW, 1, 0);
 RedrawWindow(HWND, nil, 0, RDW_FRAME + RDW_INVALIDATE + RDW_ALLCHILDREN + RDW_NOINTERNALPAINT);
end;

end.

Автор: Rennigth 24.1.2005, 10:28
s-mike
big thanks! то что надо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)