Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
свернуть программу в трей при нажатии на крестик
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток.. Мучаюсь уже довольно таки продолжительное время с одной трудностью Так при запуске программы прячу её в трей: Код: 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. Таким образом раскрываю её из трея: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. И остается последнее, это скрыть её опять в трей при нажатии на крестик: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Собственно это у меня ни как правильно и не работает, пробовал разные варианты Вот если запустить с кодом который сейчас , то работает все следующим образом: При запуске программы, она сворачивается в трей, единичный щелчок по значку в трее раскрывает программу, нажимаю крестик, программа опять сворачивается в трей, появляется значок, И вот если сейчас по нему щелкнуть, значок исчезает ( программа не разворачивается ), и в Диспетчере задач, остается висеть процесс программы.. Подскажите пожалуйста как решить такую проблему.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2014, 20:22 |
|
||
|
свернуть программу в трей при нажатии на крестик
|
|||
|---|---|---|---|
|
#18+
duh_si, WM_CLOSE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2014, 22:59 |
|
||
|
свернуть программу в трей при нажатии на крестик
|
|||
|---|---|---|---|
|
#18+
MasterZiv Вы мне предлагаете уничтожить форму, ну т.е полностью завершить программу? А мне нужно: вот если использовать код который я выложил выше, допустим, нажимаем на форме кнопку свернуть, программа сворачивается в трей, нажимаем в трее на её значок, программа разворачивается ( это работает ) и так можно играться пока не надоест..тоже самое мне нужно и для крестика, т.е чтобы программа не завершалась при нажатии на крестик , а сворачивалась в трей, и при нажатии на значок опять разворачивалась ( сделать это нужно для того, что как правило все пользователи тыкаю крестик ), а если уж пользователю захочется выключить приложение, то там предусмотрено меню с выходом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 09:04 |
|
||
|
свернуть программу в трей при нажатии на крестик
|
|||
|---|---|---|---|
|
#18+
duh_si Дело в том, что FormClose таки отработает, и форма закроется, а приложение нет. Так как иконка привязана к форме, а форма на момент создания ещё жива - иконка создастся. Но после этого форма будет уничтожена, и на любое событие трей обнаружит, что обработчик отсуствует на корню и иконку из себя выкинет. WM_CLOSE - нужно обработать самому, создать иконку и вернуть значение, что дальнейшая обработка не требуется. В случае OnClose возвращаемое значение void, входящих out параметров я тоже не вижу... стало быть, никак не сказать системе, что мы всё сами сделали и ничего больше не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 09:52 |
|
||
|
свернуть программу в трей при нажатии на крестик
|
|||
|---|---|---|---|
|
#18+
Переделал маленько программный код Вот так выглядит весь модуль Код: 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. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. в событии FormCloseQuery сделал все следующим образом, теперь почти работает как надо, теперь программа при нажатии на крестик, сворачивается в трей и разворачивается, в общем как и нужно, Но есть проблема, при запуске программы на панели задач остается висеть ярлык программы ( остается он так же висеть и при нажатии на крестик ) Подскажите пожалуйста как с этим можно справиться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 10:46 |
|
||
|
свернуть программу в трей при нажатии на крестик
|
|||
|---|---|---|---|
|
#18+
duh_si, Надо обработать wm_close, и переопределить, а не вызывать стандартное поведение этого сообщения. Сделать все, что захочешь. Также можно обработать wm_syscommand , и переопределить действие на эту кнопку. Это наверное самое правильное. Ещё можно просто убрать системную кнопку окна close, оставить только minimize. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 12:12 |
|
||
|
свернуть программу в трей при нажатии на крестик
|
|||
|---|---|---|---|
|
#18+
duh_siПодскажите пожалуйста как с этим можно справиться Можно попробовать вместо ShowWindow(Application->Handle,SW_HIDE); Использовать SetWindowPos(Application->Handle, 0, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE|SWP_HIDEWINDOW|SWP_FRAMECHANGED); Хотя я у себя для тех же целей использую тоже ShowWindow, у меня вроде всё ок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 13:22 |
|
||
|
свернуть программу в трей при нажатии на крестик
|
|||
|---|---|---|---|
|
#18+
А, не, гоню, я делаю по-другому немного, я по крестику минимизирую окно, ShowWindow(MaingDlg.m_hWnd, SW_MINIMIZE); а уже в обработчике окна на WM_WINDOWPOSCHANGED в зависимости от флага делаю ShowWindow(m_hWnd, SW_HIDE); Это полезно когда окно хоть откуда сворачивают(по кнопке или из таскбара), оно у меня в трей уходит. Кстати, проверь, что у тебя окно сворачивается в трей при закрытии из системного меню и из тасбара (если только специально не нужно обратное) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 13:26 |
|
||
|
свернуть программу в трей при нажатии на крестик
|
|||
|---|---|---|---|
|
#18+
Всем спасибо за помощь.. Получилось все таким способом.. Код: 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. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 16:29 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38620648&tid=2019519]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
73ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 16ms |
| total: | 181ms |

| 0 / 0 |
