Правильно свернуть в трэй
От: vf  
Дата: 31.12.01 05:32
Оценка:
Есть прога которая сворачивается в трэй:
делает анимацию в угол
делает окно невидимым
делает родителем окна невидимое окно
После такого сворачивания оно остается активным.
Как найти то окно (или может есть возможность просто переключить на него), которое должно стать активным ?
ЗЫ Сделать так чтоб было как при простом minimize.
Re: Правильно свернуть в трэй
От: Alex Zasypkin США  
Дата: 31.12.01 08:00
Оценка:
Здравствуйте vf, Вы писали:

vf>Есть прога которая сворачивается в трэй:

vf>делает анимацию в угол
vf>делает окно невидимым
vf>делает родителем окна невидимое окно
vf>После такого сворачивания оно остается активным.
vf>Как найти то окно (или может есть возможность просто переключить на него), которое должно стать активным ?
vf>ЗЫ Сделать так чтоб было как при простом minimize.

А чем ShowWindow( hWnd, SW_MINIMIZE ) не устраивает? Вроде бы должно делать то, чего просите...
Re[2]: Правильно свернуть в трэй
От: vf  
Дата: 31.12.01 15:47
Оценка:
Здравствуйте Alex Zasypkin, Вы писали:

AZ>А чем ShowWindow( hWnd, SW_MINIMIZE ) не устраивает? Вроде бы должно делать то, чего просите...


А без minimize(как визуального эффекта) можно ?
Анимация в угол экрана у меня уже есть.
Кстати и почему-то работает не совсем, хотя по всему должно. Кнопка на таскбаре вдавлена, а окно моргнет синим кэпшеном и все. :(

Если сделать ShowWIndow для окна после того как я сделал его родителем невидимое окно, то ничего не происходит. Видимо невидимое окно получает фокус.

Если сделать ShowWindow для невидимого окна, то оно появляется на таскбаре и рисует как оно сворачивается.
Re: Правильно свернуть в трэй
От: TepMuHyc  
Дата: 01.01.02 19:50
Оценка:
Здравствуйте vf, Вы писали:

vf>Есть прога которая сворачивается в трэй:

vf>делает анимацию в угол
SendMesage(WM_SYSCOMMAND, SC_MINIMIZE)


vf>делает окно невидимым

ShowWindow(SW_HIDE);
CreateTrayIconForThatWindow();


vf>делает родителем окна невидимое окно

А это зачем еще ??? Предыдущий шаг все сделает как надо...

vf>После такого сворачивания оно остается активным.

vf>Как найти то окно (или может есть возможность просто переключить на него), которое должно стать активным ?
SetForegroundWindow(<<Any still visible toplevel window>>);

<<Any still visible toplevel window>> is:
//ищем первое видимое окно верхнего уровня (предполагается, что то окно
//что мы прячем тоже верхнего уровня)
HWND hWnd = <<window we're hiding now>>
while( (hWnd = GetWindow(hWnd, GW_HWNDNEXT)) == NULL || !IsWindowVisible(hWnd) );
if( IsWindow(hWnd) )
    SetForegroundWindow(hWnd); //вот оно, родимое
____________________
God obviously didn't debug, hasn't done any maintenance, and no documentation can be found. Truly amateur work.
Re[2]: Правильно свернуть в трэй
От: vf  
Дата: 02.01.02 05:09
Оценка:
Здравствуйте TepMuHyc, Вы писали:

vf>>делает родителем окна невидимое окно

TMH>А это зачем еще ??? Предыдущий шаг все сделает как надо...
И правда, чего это я...

TMH><<Any still visible toplevel window>> is:

Спасибо, все получилось!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.