Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.033 c
1-1095945000
kukuikar
2004-09-23 17:10
2004.10.10
Warning


14-1095918599
Lexxx
2004-09-23 09:49
2004.10.10
Мастера, подскажите, можно ли в XP Home поставить IIS 5.0?


14-1095717751
VAmpiro$
2004-09-21 02:02
2004.10.10
Что такое "Hendle" и как с ним боротся?


14-1095927192
REP
2004-09-23 12:13
2004.10.10
Что такое поддержка MPEG4 в TV тюнерах?


3-1094895135
Новенький
2004-09-11 13:32
2004.10.10
Автоинкременентное поле





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский