Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.118.145.114] |
|
Сообщ.
#1
,
|
|
|
Задача:
Окно. При нажатии на кнопку СВЕРНУТЬ иконка прыгает в сис трей, а на панели задач окна не видно. (помощ в создании иконки в сис трэе не нужна). И к примеру по дабл_клику по иконке окно вновь появляется (как его раскрыть) Так вот как я понимаю мне надо отловить сообщение которое посылается приложению при нажатии "СВЕРНУТЬ". т.е. я просто не знаю какое это сообщение. Но это не все, как реализовать чтобы свернутое приложение не было на панели задач, а разворачивалось из вне ( ну к примеру при щелчке на иконке в сис трэе) Заранее благодарен. |
Сообщ.
#2
,
|
|
|
Короче говоря, из того, что именно тебе надо, я понял мало, но попробую помочь. Во-первых, обрабатывай WM_SIZE и при позиции SIZE_MINIMIZED прячь окно. Думаю, знаешь, как.
Если сможешь объяснить вопрос точнее, помогу, недавно с этим конкретно разбирался. |
Сообщ.
#3
,
|
|
|
Запускаешь программу. Она своим поведением особо не выделяется. Обычное окошко. При нажатии на кнопку «СВЕПНУТЬ» оно не появляется на панели инструментов!!! А в сис треэ появляется иконка. При двойном щелчке на иконку появляется родное окно, а иконка пропадает. Как это реализовать? Как работать с иконкой в сис трее я знаю, а вот все остальное. Надеюсь, что я понятно излагаюсь.
|
Сообщ.
#4
,
|
|
|
Кстати, о терминах:
The taskbar notification area is sometimes erroneously called the "tray." - Цитата из MSDN. |
Сообщ.
#5
,
|
|
|
ShowWindow(hWnd, SW_HIDE); // скрыть
ShowWindow(hWnd, SW_RESTORE); // вернуть Ну а сообщения - смотря что нажали: WM_CLOSE или WM_WINDOWPOSCHANGED, где можно определить, что с окном делали. |
Сообщ.
#6
,
|
|
|
Спасибо. Все вроде работает. Но появилась еще одна маленькая проблемка. Дело в том что когда вызывается ShowWindow(hWnd, SW_RESTORE); то окно появляется но оно не активно. Пробывал SetFocus, но ничего не выходит. Как принудительно окну присвоить фокус ввода???
|
Сообщ.
#7
,
|
|
|
Да, была у меня такая проблема. Это потому, что когда юзер жмет минимайз, и ты прячешь окно, то при дабл клике тебе надо и разворачивать окно назад.
Попробуй так: (при показе окна) ShowWindow(SW_RESTORE); ShowWindow(SW_SHOW); SetForeground(); У меня работало безотказно Удачи. |
Сообщ.
#8
,
|
|
|
2 reporter: первая строчка лишняя
|
Сообщ.
#9
,
|
|
|
А вот и дудки ! :)
По крайней мере, у меня в Вин2К, если этого не сделать, то окошко станет активным, но НЕ ресторнется ! Просто замигает черным и успокоится. :P |
Сообщ.
#10
,
|
|
|
Попробуй сворачивать в сис трей двойным кликом на
заголовке окна. void CMainDlg::OnNcLButtonDblClk(UINT nHitTest,CPoint point) { if(nHitTest==HTCAPTION) SysTray(); } ....... //}}AFX_MSG_MAP ON_WM_NCLBUTTONDBLCLK() .............. //}}AFX_MSG afx_msg void OnNcLButtonDblClk(UINT nHitTest,CPoint point); |