Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: baka от Март 25, 2009, 15:13



Название: Развернуть программно скрытый taskbar
Отправлено: baka от Март 25, 2009, 15:13
Добрый день,


можно ли как нибудь программно заставить развернуться, свернутую автоматически панель задач Windows, в трее которой находится мой QSystemTrayIcon.

т.е. когда иконка начинает анимиоваться,

пользователи у которых панель убирается автоматически этого не видят.
(в qip, icq - панель как то вынуждают всплыть).

я пробовал так
Код:
HWND trayWnd = FindWindow(L"Shell_TrayWnd", 0);
SendMessage(trayWnd, WM_MOUSEHOVER, MK_LBUTTON, 0);
//и так
PostMessage(trayWnd,WM_SETFOCUS,0,0);
//и так
ShowWindow(trayWnd, [с самыми разными параметрами ]);

можно еще попробовать Shell_NotifyIcon(NIM_SETFOCUS...),
но для этого надо знать HWND самой иконки,
(а чтоб узнать HWND придется переписывать сам QSystemTrayIcon)


в общем по winapi у меня практически нулевые знания, сам я не соображу че делать
разьве что вбить костыли в виде
Код:
FlashWindow(FindWindow([Первое попавшееся окно]), true);

Google-ил 2 дня, msdn смотрел но не нашел, даже на других форумах по winapi искал.

что делать не знаю.

  :'(


Название: Re: Развернуть программно скрытый taskbar
Отправлено: Rcus от Март 25, 2009, 15:49
Ну зачем же переписывать. Под Windows не принято шарить C++ библиотеки, поэтому можно патчить :)
QSystemTrayIcon::showMessage тоже вызывает отображение панели задач (и соответственно области уведомлений), но там нужно передавать текст, что не всегда уместно.


Название: Re: Развернуть программно скрытый taskbar
Отправлено: baka от Март 25, 2009, 16:22
Да, я так тоже пробовал,
message потом остается висеть  :(
даже если msec = 1.

а у меня в этот момент должны еще всплывать самодельные окна с уведомлениями
как в qip, icq
(так кстати, появление taskbar'а как то реализованно)




Название: Re: Развернуть программно скрытый taskbar
Отправлено: lit-uriy от Март 25, 2009, 16:46
если в qip'е это реализовано, надо поглядеть их исходник


Название: Re: Развернуть программно скрытый taskbar
Отправлено: Rcus от Март 25, 2009, 17:01
Ну вроде правильный ход мысли был с Shell_NotifyIcon. Судя по ./gui/util/qsystrayicon_win.cpp HWND иконки можно попробовать достать примерно так:
Код
C++ (Qt)
QSystrayIcon *trayIcon = new QSystrayIcon(this);
HWND hwnd = trayIcon->findChild<QWidget*>()->winId();
Хотя конечно лучше так не делать


Название: Re: Развернуть программно скрытый taskbar
Отправлено: Олег от Апрель 02, 2009, 20:15
А где можно посмотреть исходники qip'a?