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

Вниз

Деактивация   Найти похожие ветки 

 
BoAlSe ©   (2005-01-04 17:03) [0]

Приложение минимизируется. Как словить событие, которое происходит ДО ТОГО, как окно начинает сворачиваться.


 
ламер ©   (2005-01-04 18:19) [1]

TApplicationEvents.OnMinimize


 
BoAlSe ©   (2005-01-05 05:17) [2]

TApplicationEvents.OnMinimize генерируется уже после того, как пошёл прцесс минимизации


 
Erik1 ©   (2005-01-05 10:34) [3]

procedure WMSize(var Msg: TWMSize); message wm_Size;


 
ssk ©   (2005-01-05 11:08) [4]

>Erik1

может лучше WM_SYSCOMMAND на предмет SC_MINIMIZE ?


 
BoAlSe ©   (2005-01-05 12:33) [5]

А нельзя ли поподробнее, или примерчик посмотреть?

procedure WMSize(var Msg: TWMSize); message wm_Size;

у меня выдаёт много ошибок, а насчёт

>может лучше WM_SYSCOMMAND на предмет SC_MINIMIZE ?

я чего-то недопонял.

Пожалуй, обрисую ситуацию поподробнее.
Я делаю игру на DelphiX, metal & fire называется, в сети уже давно валяется первая версия, можете посмотреть здесь:
http://boalse.narod.ru/mf.htm
Там есть одно неудобство: поверхности, созданные в видеопамяти динамически, после минимизации приложения каким-то образом приобретают размер 0х0 пикселей, поэтому при активизации они не прорисовываются. Выход я нашёл, нужно при активизации повторно назначить им нужный размер и заново прорисовать. Но есть одна особенная поверхность, это сама карта, она может менятся во время игры, на ней при необходимости рисуются следы от гусениц, гильзы, упавшие деревья (все эти прелести будут в новой версии). Поэтому при повторной перерисовке весь этот "мусор" теряется, закрашивается, чего бы не хотелось. Поверхности уничтожаются в тот момент, когда начинает меняется разрешение экрана и форма начинает сворачиваться. Вот если бы поймать событие перед этим моментом и записать поверхность в оперативную память, всё было бы ОК. Из системной потом можно легко перерисовать в видеопамять.


 
ssk ©   (2005-01-05 13:32) [6]

>BoAlSe
>может лучше WM_SYSCOMMAND на предмет SC_MINIMIZE ?
я чего-то недопонял.


вот что я имел ввиду:

protected
  procedure WMSYSCOMMAND(var Message :TMessage); message WM_SYSCOMMAND;

var
 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.WMSYSCOMMAND(var Message : TMessage) ;
begin
if Message.wParam = SC_MINIMIZE then
  ShowMessage("Сворачиваемся!")
else
 inherited;
end;


 
BoAlSe ©   (2005-01-05 16:49) [7]

>ssk

Почему-то не работает, сообщение вообще не выводится


 
ssk ©   (2005-01-05 16:52) [8]

>Почему-то не работает

потому что это не работает для полноэкранного режима. до поста [5] я ж не знал, что ты игру пишешь ;)



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

Форум: "Основная";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.046 c
4-1101974919
Андрюша
2004-12-02 11:08
2005.01.23
Как можно отловить системные клавиши?


14-1105171214
Чеширский_Кот
2005-01-08 11:00
2005.01.23
Btrieve


14-1104708953
Кудесник
2005-01-03 02:35
2005.01.23
Onimusha 3... что это?


1-1105265978
Федюлин Григорий
2005-01-09 13:19
2005.01.23
Сохранение ListView


1-1105430544
AndyDel
2005-01-11 11:02
2005.01.23
Компонент типа Object Inspectora





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский