Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2009, 13:25   #11
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Вот какие мессяги пришли мне (это только General засекались) послу Win+D. Окно уже было неактивно.
Altera вне форума Ответить с цитированием
Старый 14.12.2009, 13:47   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вон там WM_SIZE с параметром SIZE_MINIMIZED. Вот это сообщение и отлавливай.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.12.2009, 16:37   #13
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Цитата:
Сообщение от Altera Посмотреть сообщение
2Somebody, это что за прога?
Spy++

А, не заметил, кажется, я уже поздновато.
Somebody вне форума Ответить с цитированием
Старый 15.12.2009, 05:16   #14
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Вон там WM_SIZE с параметром SIZE_MINIMIZED. Вот это сообщение и отлавливай.
Ага, работает.
Сделал так:
Код:
procedure TSomeWnd.WMSize(var m: tMessage);
begin
   if m.WParam = SIZE_MINIMIZED then
      setSomeWndVisibile := false;
end;
А другие сообщения не будут перебиваться? Я имею ввиду, вот при перехвате WM_SYSCOMMAND

Код:
procedure TSomeWnd_wnd.WMSysCommand(var m: TMessage);
begin
   if m.WParam = SC_MINIMIZE then
      setSomeWndVisibile := false;
   else
      m.Result := DefWindowProc(Handle, m.Msg, m.wParam, m.lParam);
end;
надо вызывать m.Result := DefWindowProc(Handle, m.Msg, m.wParam, m.lParam);

Хорошо, а почему WS_EX_TOOLWINDOW окно без флага WS_EX_TOPMOST после "сворачивания всех окон", после восстановления кликом в трее при помощи кода ShowWindow(handle, SW_RESTORE), исчезает сразу после потери фокуса?

Даже нет, вру, не нужен код ShowWindow(handle, SW_RESTORE). Достаточно просто фокус на иконку в трее установить, как окно тут-же появляется. А потом исчезает при потере фокуса.

Ах да, если окно WS_EX_TOOLWINDOW, то WM_SIZE не приходит при Win+D;

Опять наврал, короче окно восстанавливается вместе как только я разворачиваю какое-то другое окно, причём после этого оно ведёт себя нормально. Как я уже написал, окно так-же восстанавливается при передаче фокуса иконке приложения в трее, но тут-же исчезает при потере фокуса.

Вот лог сообщений при Win+D

Правда тут уже и пессяги восстановления.


Мне надо или предотвратить исчезание окна после потери фокуса, либо сделать так, что-бы при Win+D окно сворачивалось бы в в панель задач.

Последний раз редактировалось Stilet; 15.12.2009 в 08:13.
Altera вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
висне сет при запуску Win XP после установки Win 7 VVkSoft Windows 3 15.09.2009 10:36
Что происходит, если комп перегреваеться? Altera Компьютерное железо 35 02.06.2009 20:04
Что происходит с локальным сервером??? just me PHP 13 14.04.2009 14:01
что происходит при нажатии power bnv Компьютерное железо 5 09.03.2009 14:39
мастер установки, не пойму что происходит! ronich Помощь студентам 0 27.11.2007 20:59