|
|
|
Приложение после закрытия остается висеть в процессах
|
|||
|---|---|---|---|
|
#18+
Есть программа, создающая новое полноэкранное окно и выполняющая некоторые действия. Основной код программы: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Код модуля "window.pas": Код: pascal 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. Проблема в том, что программа при закрытии окна остается висеть в диспетчере задач - видимо, цикл работает, не проходит до этой строки: Код: pascal 1. А это значит, что метод "TWindow.update" не возвращает false, хотя должен при получении "WM_DESTROY"... В чем я ошибся? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2018, 13:55 |
|
||
|
Приложение после закрытия остается висеть в процессах
|
|||
|---|---|---|---|
|
#18+
amadeusВ чем я ошибся? Во-первых, в возвращаемых значениях оконной функции. amadeusметод "TWindow.update" не возвращает false Не вижу строчки в которой там упоминается false. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2018, 14:38 |
|
||
|
Приложение после закрытия остается висеть в процессах
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovНе вижу Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2018, 15:36 |
|
||
|
Приложение после закрытия остается висеть в процессах
|
|||
|---|---|---|---|
|
#18+
А как это, работает у вас ? Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2018, 16:22 |
|
||
|
Приложение после закрытия остается висеть в процессах
|
|||
|---|---|---|---|
|
#18+
авторВо-первых, в возвращаемых значениях оконной функции. В чем именно там ошибка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2018, 21:05 |
|
||
|
Приложение после закрытия остается висеть в процессах
|
|||
|---|---|---|---|
|
#18+
amadeusВ чем именно там ошибка? Безмозглый копипаст вижу я. А вот инициализацию msg.Result - нет. А ведь MSDNReturn Value If an application processes this message, it should return zero. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2018, 21:51 |
|
||
|
Приложение после закрытия остается висеть в процессах
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. 2. 3. 4. 5. 6. 7. Оставил такой код в этой функции, но ошибка все равно есть. Возможно, проблема не здесь, а в чем-то еще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 08:12 |
|
||
|
Приложение после закрытия остается висеть в процессах
|
|||
|---|---|---|---|
|
#18+
Думаю, проблема в том, что коды сообщений, получаемых после вызова "getMessage" и в "wndProc", разные. Поэтому может не работать проверка на "WM_DESTROY" в "update". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 09:34 |
|
||
|
Приложение после закрытия остается висеть в процессах
|
|||
|---|---|---|---|
|
#18+
amadeus, Проблема в том, что надо уметь читать документацию: Microsoft DocsThe PostQuitMessage function posts a WM_QUIT message to the thread's message queue and returns immediately; the function simply indicates to the system that the thread is requesting to quit at some time in the future.GetMessage ParametershWnd Type: HWND A handle to the window whose messages are to be retrieved. The window must belong to the current thread. If hWnd is NULL, GetMessage retrieves messages for any window that belongs to the current thread, and any messages on the current thread's message queue whose hwnd value is NULL (see the MSG structure). Therefore if hWnd is NULL, both window messages and thread messages are processed. PeekMessageW ParametershWnd Type: HWND A handle to the window whose messages are to be retrieved. The window must belong to the current thread. If hWnd is NULL, PeekMessage retrieves messages for any window that belongs to the current thread, and any messages on the current thread's message queue whose hwnd value is NULL (see the MSG structure). Therefore if hWnd is NULL, both window messages and thread messages are processed. Я выделил жирным критичные моменты, в принципе этого должно хватить чтобы понять почему не работает. Если вдруг не хватит, то под катом - код, который у меня работает. Ахтунг! Delphi 7 Код: pascal 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 11:33 |
|
||
|
Приложение после закрытия остается висеть в процессах
|
|||
|---|---|---|---|
|
#18+
alekcvp , спасибо, буду разбираться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 12:52 |
|
||
|
Приложение после закрытия остается висеть в процессах
|
|||
|---|---|---|---|
|
#18+
amadeusОставил такой код в этой функции Прелестно... Т.е. ты вообще забил на процитированное мною "функция должна возвращать..." или просто не смог это прочитать?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 14:15 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=88&tid=2040076]: |
0ms |
get settings: |
7ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
79ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 234ms |
| total: | 414ms |

| 0 / 0 |
