|
|
|
Как запустить программу в трей?
|
|||
|---|---|---|---|
|
#18+
Всем привет! Подскажите, пожалуйста, как при открытии программы сразу запустиь ее в трей! Я пробовала в InitDialog() посылать сообщение SendMessage(WM_SIZE, SIZE_MINIMIZED,0); но это не сработала, потом я в InitDialog создала таймер и по таймеру уже посылала это сообщение и прятала окно ShowWindow(SW_HIDE); Этот вариант работает, но проблымывает окно на экране, даже если ставить в таймере 1 милисекунду, мне такой результат не очень нравится... Подскажите, пожалуйста, вариант получше, только по возможности хоть с какими-то пояснениями... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2004, 09:45 |
|
||
|
Как запустить программу в трей?
|
|||
|---|---|---|---|
|
#18+
Так все-таки в трей приложение надо засунуть или просто свернуть (в Task Bar) ? Приложение на основе диалогового окна? И что значит "проблымывает" (в сленге не очень силен)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2004, 10:16 |
|
||
|
Как запустить программу в трей?
|
|||
|---|---|---|---|
|
#18+
В любом варианте, после создания окна зовётся функция ShowWindow, вот в ней надо правильный параметр поставить SW_SHOWMINIMIZED ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2004, 10:23 |
|
||
|
Как запустить программу в трей?
|
|||
|---|---|---|---|
|
#18+
Вариант 1 (когда MDI,SDI) В InitInstance() приложения после инициализации указателя на главное окно вызываешь , к примеру, pFrame->ShowWindow(SW_MINIMIZE); pFrame - этот указатель на главное окно Вариант 2 (когда Dialog) 1) Переопределяешь в диалоге функцию OnShowWindow() 2) Вызываешь в этой функции this->ShowWindow(SW_MINIMIZE); А вообще, вариантов может быть куча: кто как может извратиться... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2004, 10:55 |
|
||
|
Как запустить программу в трей?
|
|||
|---|---|---|---|
|
#18+
Дело вот обстоит как: По кнопке MINIMIZE (в заголовке окна) моя программа сворачивается не в прямоугольник на панели задач, а в иконку в трее. Для этого я переопределила ф-цию OnSize(). Теперь мне надо чтоб она сворачивалась в трей при запуске. Я переопределила метод OnShowWindow(), добавила туда: this->ShowWindow(SW_MINIMIZE); this->ShowWindow(SW_HIDE); в результате при отработке получаю, что программа и в трее появилась но и на понели задач прямоугольник висит все равно... Как же мне от него избавиться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2004, 13:12 |
|
||
|
Как запустить программу в трей?
|
|||
|---|---|---|---|
|
#18+
kimaДело вот обстоит как: По кнопке MINIMIZE (в заголовке окна) моя программа сворачивается не в прямоугольник на панели задач, а в иконку в трее. Для этого я переопределила ф-цию OnSize(). Теперь мне надо чтоб она сворачивалась в трей при запуске. Я переопределила метод OnShowWindow(), добавила туда: this->ShowWindow(SW_MINIMIZE); this->ShowWindow(SW_HIDE); в результате при отработке получаю, что программа и в трее появилась но и на понели задач прямоугольник висит все равно... Как же мне от него избавиться? Если работаешь на сибилдере, то в samples конкретный пример есть. Если на msvc то посмотри codeguru или codeproject - там есть также вполне разжеваные примеры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2004, 21:39 |
|
||
|
Как запустить программу в трей?
|
|||
|---|---|---|---|
|
#18+
Есть апишная функция Shell_Notify, кажется называется. Заполняешь структуру NOTIFY..., которая передается в первом параметре и вид действия (2 параметр). В MSDN-е все написано. После вызова этой функции надо вызвать ShowWindow(SW_HIDE) - приложение скроется в SysTray. Для обратного раскрытия необходимо определить свое сообщение и обработчик на него. Id сообщения передать в качестве значения одного из членов структуры NOTIFY... (в имени есть ...CallBack...). В обработчике вызвать ShowWindow(SW_RESTORE) ну и если надо из трея удалить иконку - Shell_Notify с действием удаления (NIF_DELETE кажется) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2004, 06:18 |
|
||
|
Как запустить программу в трей?
|
|||
|---|---|---|---|
|
#18+
Кнопка в панели задач зависит от стиля окна. Чтобы оно в таскбар не попадало, надо задать окну (расширенный)стиль WS_EX_TOOLWINDOW при нажатии кнопки минимизации. Но вообще, при скрытии окна, кнопка в таскбаре тоже пропадает.... Стало быть.. чё-то не то скрываете тут :) Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2004, 08:45 |
|
||
|
Как запустить программу в трей?
|
|||
|---|---|---|---|
|
#18+
Граждане, дорогие, ну подскажите еще варианты! Может кто-то уже такое делал или встречал в сети, пришлите пример: mck28@rambler.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2004, 15:24 |
|
||
|
Как запустить программу в трей?
|
|||
|---|---|---|---|
|
#18+
авторДля этого я переопределила ф-цию OnSize(). Стало быть, надо так же переопределить функцию OnActivate - которая дёргается по событию поднятия окна, и будет тебе счастье. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2004, 07:40 |
|
||
|
Как запустить программу в трей?
|
|||
|---|---|---|---|
|
#18+
Смотри почту, без классов правда, "голый" WinAPI. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2004, 06:18 |
|
||
|
Как запустить программу в трей?
|
|||
|---|---|---|---|
|
#18+
kimaПодскажите, пожалуйста, как при открытии программы сразу запустиь ее в трей! Здравствуйте, kima, Недавно сделал примерно то же: мне надо было написать приложение, которое бы выполнялось не выводя формы на экран. (т.е. не надо было его сворачивать-разворачивать, а только показать, что оно работает...) Это "сухой остаток" из примера TrayIcon комплекта поставки Borland C++Builder (У меня версия 5.0). Попробуйте, может поможет... Вот мой код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. Станислав C. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2004, 07:22 |
|
||
|
Как запустить программу в трей?
|
|||
|---|---|---|---|
|
#18+
Станислав C. kimaПодскажите, пожалуйста, как при открытии программы сразу запустиь ее в трей! Здравствуйте, kima, Недавно сделал примерно то же: мне надо было написать приложение, которое бы выполнялось не выводя формы на экран. (т.е. не надо было его сворачивать-разворачивать, а только показать, что оно работает...) Это "сухой остаток" из примера TrayIcon комплекта поставки Borland C++Builder (У меня версия 5.0). Попробуйте, может поможет... Вот мой код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. Станислав C. ОЧЕНЬ пригодился этот кусок кода! ...thanks за столь подробный ответ! Хотелось бы узнать, как сделать чтобы при клике правой кнопки мыши на trayicon выскакивало popup меню. (рылся в стандартных примерах по trayicon, но запутался, хотя там это есть...) Буду оч. признателен если напишете столь же полный и понятный ответ как выше! =)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 23:20 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32782144&tid=2033942]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
21ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 320ms |

| 0 / 0 |
