Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.10;
Скачать: CL | DM;

Вниз

Как отключить эффект сворачивания окна?   Найти похожие ветки 

 
Jiurasrasr   (2004-08-31 17:41) [0]

Есть mdi приложение.И есть некоторое количество Child окон.
Есть кнопки Вперед,Назад, которые переключают Child окна попрядку.А именно одно из окон child становиться wsMaximized а то которое было на весь экран, становиться wsNormal.Проблема в том что раскрытие окна идет не мгновенно.Т.е. видно как сворачивается одно окно, и как потом разворачивается другое, что неудобно, вернее некрасиво.Я хотел бы чтобы сворачивание и разворачиваниен проводилось безо всяких визуальных эффектов, т.е. наиболее быстро. Как это можно сделать?


 
Synochka   (2004-08-31 19:31) [1]

А зачем ты их именно так переключаешь? Есть же Next.....


 
Almaz ©   (2004-08-31 22:57) [2]

Отключить эффект сворачивания окна только в своем приложении нельзя, его можно отключить только во всей системе. Сделать это можно так:

var
 AniInfo : TAnimationInfo;
...
 AniInfo.cbSize := SizeOf(TAnimationInfo);
 AniInfo.iMinAnimate := 0;
 SystemParametersInfo(SPI_SETANIMATION, SizeOf(AniInfo), @AniInfo, 0);


Этот код выключит анимацию сворачивания/разворачивания окна во всей системе, но с моей точки зрения программа влияющая на всю систему без ведома пользователя - это плохой тон. Поэтому рекомендую вам сделать следующее:
1. В обработчике Application.OnActivate выполнять следующий код:

 AniInfo.cbSize := SizeOf(TAnimationInfo);
 SystemParametersInfo(SPI_GETANIMATION, SizeOf(AniInfo), @AniInfo, 0);
 PrevAniStatus := AniInfo.iMinAnimate;
 if AniInfo.iMinAnimate <> 0 then
 begin
   AniInfo.iMinAnimate := 0;
   SystemParametersInfo(SPI_SETANIMATION, SizeOf(AniInfo), @AniInfo, 0);
 end;
, где PrevAniStatus - это глобальная переменная, в которой будет храниться включена или выключена была анимация до активации вашенго приложения.

2. В обработчике Application.OnDeactivate возвращать то состояние анимации, которое было до активации вашей программы:

 AniInfo.iMinAnimate := PrevAniSatus;
 SystemParametersInfo(SPI_SETANIMATION, SizeOf(AniInfo), @AniInfo, 0);


Удачи.


 
MIm1 ©   (2004-09-01 08:51) [3]

Странно, я кажется писал

LockWindowUpdate(application.mainform.handle);
childform.style:= wsmaximized;
LockWindowUpdate(0);


 
Almaz ©   (2004-09-01 23:47) [4]


> MIm1 ©   (01.09.04 08:51) [3]
> Странно, я кажется писал
>
> LockWindowUpdate(application.mainform.handle);
> childform.style:= wsmaximized;
> LockWindowUpdate(0);

Функция LockWindowUpdate запрещает пересовку клиентской части окна, анимации окон она не запретит.


 
Mim1 ©   (2004-09-02 00:55) [5]


> [4] Almaz ©   (01.09.04 23:47)


:)
Странно, по моему результат налицо, и имхо это более красивый метод чем [2].


 
Экспериментатор   (2004-09-02 06:58) [6]

Между прочим именно так
как написал
Almaz ©   (31.08.04 22:57) [2]
и делает Борланд
Изучайте исходники


 
Mim1 ©   (2004-09-02 11:36) [7]


> [6] Экспериментатор   (02.09.04 06:58)


> и делает Борланд

Между прочим я это знаю, и тем не менее... см.[5]


 
Almaz ©   (2004-09-03 23:01) [8]


> :)
> Странно, по моему результат налицо, и имхо это более красивый
> метод чем [2].

Ну свой метод я никому не навязываю :) Просто я только что еще раз проверил ваш способ в своей программе, в которой я столкнулся в свое время с аналогичной проблемой, т.к. он мне тоже по компактности нравится намного больше, но он не работает у меня Win2000SP4 professional.
Такжен, согласно MSDN функция LockWindowUpdate не влияет на анимацию окон.

Удачи.


 
Mim1 ©   (2004-09-04 06:48) [9]

Ну что начнем холивар? Раунд первый. Телепузики круче покемонов! :)


 
GrayFace ©   (2004-09-05 09:04) [10]

А если не сворачивать-разворачивать, а просто прятать? Или прятать, потом сворачивать-разворачивать, а потом показывать?


 
@BraIN ©   (2004-09-05 09:16) [11]

2 GrayFace ©   (05.09.04 09:04) [10]

Не поможет, все равно анимация будет.


 
Lenor ©   (2004-09-06 02:10) [12]

а как-то же сделано сворачивание всех окон без анимации при нажатии на ярлычок "свернуть все окна", который на панели задач слева :) Или это не то?..


 
DVM ©   (2004-09-06 21:49) [13]


> а как-то же сделано сворачивание всех окон без анимации
> при нажатии на ярлычок "свернуть все окна", который на панели
> задач слева :) Или это не то?..

А они не сворачиваются вообще. Desktop двигается наверх.



Страницы: 1 вся ветка

Текущий архив: 2004.10.10;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.041 c
1-1096271454
Vova
2004-09-27 11:50
2004.10.10
Помогите подщитать количество пикселей в рисунке


14-1094544398
9k33
2004-09-07 12:06
2004.10.10
Альтернатива для RENT A CODER


4-1094813599
Чебуратор
2004-09-10 14:53
2004.10.10
Быстро передать файл клиенту через сервер приложений (MIDAS)?


3-1094715833
Andrey
2004-09-09 11:43
2004.10.10
Проблема с заполнением comboBox


9-1086793751
MrAngel
2004-06-09 19:09
2004.10.10
Мультикамерный вывод.