|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
Может не в том разделе спрашиваю, но нет раздела Программирование под Windows. Много лет наблюдаю интересную картину. Если зажать и держать стандартную (на заголовке окна) кнопку "Закрыть окно", то перестаёт обновляться GUI. Вот запускаем банальный Notepad, зажимаем мышкой кнопку Закрыть и перестаёт мигать курсор. Почему? И какова механика наблюдаемого явления? PS: Погуглил слегка, но вроде ничего толкового не нашёл. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 07:28 |
|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
petrav, Событие идет на ФАКТ отпускания кнопки. А ты не отпустил. Вот все и ждуны и ждут))). Подходит? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 09:59 |
|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav, Событие идет на ФАКТ отпускания кнопки. А ты не отпустил. Вот все и ждуны и ждут))). Подходит? Нет, потому что такое происходит только при зажатии стандартных кнопок на заголовке окна. Остальных кнопок это не касается. Да и вообще, предположение не логичное с точки зрения очереди событий. Куча приложений так себя ведёт. Например, тот же Process Explorer от Руссиновича. И Qt приложения так себя ведут. Могу предположить, что зажатие этих кнопок блокирует событие WM_TIMER, например, или вообще всю виндовую очередь событий приложения. Но почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 10:48 |
|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
petrav Нет, потому что такое происходит только при зажатии стандартных кнопок на заголовке окна "Суслика видишь?" (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 10:59 |
|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav Нет, потому что такое происходит только при зажатии стандартных кнопок на заголовке окна "Суслика видишь?" (с) Какая ОС? Какое приложение? На чём написано? Я только что под Win7 зажал кнопку Закрыть в Process Explorer (видимо чистый WinAPI) и в Qt-приложении. И они перестали обновляться. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 11:02 |
|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
petrav, Ооооо. Qt действительно так ведет. А студия нет. Старье наверно. Так написано. Не многозадачно. Охота тебе голову ломать. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 11:03 |
|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
petrav, Студия - меню - Tools - Spy++ Запусти и посмотри класс главного окна. Топик стартер должен больше работать отвечающих (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 11:06 |
|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav, Ооооо. Qt действительно так ведет. А студия нет. Старье наверно. Так написано. Не многозадачно. Охота тебе голову ломать. Кстати, да. Студия резво продолжает обновляться... А стандартный Task Manager замерзает. Многопоточность тут, я думаю, не причём. Самое интересное, сколько я помню так было всегда - начиная с Win95 и WinNT 4.0. И вот спустя десятилетия я решил разобраться. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 11:13 |
|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
petrav Многопоточность тут, я думаю, не причём. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 11:21 |
|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
Win10, блокнот, просто поводил мышем над крестиком - курсор перестал моргать. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 12:23 |
|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
Dima T Win10, блокнот, просто поводил мышем над крестиком - курсор перестал моргать. "перекуём баги на фичи" ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 12:25 |
|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
petravСтудия резво продолжает обновляться... Самоочевидный ответ: у студии в заголовке нарисованы ненастоящие кнопки. Поэтому нажатие на них до DefWindowProc() не доходит. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 13:41 |
|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
Скорее всего имеет место оптимизация графических действий. Я помню что при drag window старые версии Windows-95 вообще не транслировали состояние окна. Только прозрачную рамку до тех пор пока вы не отпустите ЛКМ. В версиях типа Windows-98 делался снимок (картинка) окна и фиксировалась то тех пор пока не отпустите ЛКМ тоже. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 13:46 |
|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov petravСтудия резво продолжает обновляться... Самоочевидный ответ: у студии в заголовке нарисованы ненастоящие кнопки. Поэтому нажатие на них до DefWindowProc() не доходит. Да, у приложений у которых не стандартный заголовок окна, такой фишки не наблюдается. Само собой, я постоянно акцентировал внимание, что кнопки стандартные. PetroNotC Sharp petrav, Студия - меню - Tools - Spy++ Запусти и посмотри класс главного окна. Топик стартер должен больше работать отвечающих (с) Про Spy++ я забыл. У Qt приложения полностью остановилась очередь виндовых сообщений. По логами видно, что QTimer тоже остановился. У других приложений на С++ очередь виндовых сообщений остановилась на 99%. Остались только WM_MOUSEMOVE и WM_GETICON. Как и предполагалась MS Windows, видимо, останавливает очередь событий. Но зачем?! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 13:54 |
|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
petrav MS Windows, видимо, останавливает очередь событий. Но зачем?! Факт ОТПУСКАНИЯ КНОПКИ важен. Вы ее не отпустили. А гуи в одном потоке работает. Поставь в buttonClick( sleep Будет заморозка? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 14:04 |
|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
maytonЯ помню что при drag window старые версии Windows-95 вообще не транслировали состояние окна. Любые версии так делают если в настройках производительности снять галочку "Отображать содержимое окна при перетаскивании". petravНо зачем?! Затем, что в MS тоже не поголовно гении, а этот код, скорее всего, никто не трогал со времён былинных. Так что если там стоит, например, CaptureMouse + свой собственный цикл обработки сообщений до отпускания кнопки, то... имеем то, что имеем. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 14:10 |
|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav MS Windows, видимо, останавливает очередь событий. Но зачем?! Факт ОТПУСКАНИЯ КНОПКИ важен. Вы ее не отпустили. А гуи в одном потоке работает. Поставь в buttonClick( sleep Будет заморозка? Мне иногда кажется, что ты студент, который вчера на экзамене по программированию пятёрку получил. Ответь: - Что общего между зажатой кнопкой и Sleep? - Почему зажатие других кнопок не приводит к заморозке? И события нормально продолжают идти? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 14:11 |
|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Затем, что в MS тоже не поголовно гении, а этот код, скорее всего, никто не трогал со времён былинных. Так что если там стоит, например, CaptureMouse + свой собственный цикл обработки сообщений до отпускания кнопки, то... имеем то, что имеем. Да, у меня тоже было предположение, что это просто глюк который идёт чуть ли не с Win3.11 и который каким-то образом перескочил в семейство WinNT. Или же это какая-то архитектурная проблема - идеологическая и они просто не могут исправить ошибку проектирования. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 14:16 |
|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
petrav пятёрку получил petrav Почему зажатие других кнопок не приводит к заморозке? И события нормально продолжают идти? У каких других? Сделай кнопу на окне и посмотри. Ждем. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 14:16 |
|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
petrav исправить ошибку проектирования. :) Если в винде на событие кнопы Копировать обработчик тормознуть, то кнопа так и будет Не отжата. Тоже непорядок? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 14:18 |
|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
PetroNotC SharpТоже непорядок? Да, "тормознутие" это непорядок. Но в твоём коде этот непорядок на твоей совести. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 14:25 |
|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov PetroNotC SharpТоже непорядок? Да, "тормознутие" это непорядок. Но в твоём коде этот непорядок на твоей совести.конечно. А то что юзверь тормознул и заснул на кнопе Закрыть окно на чьей совести? ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 14:30 |
|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
Как там дела с кодировками и с автоматизацией ваших заводов и параходов? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 15:02 |
|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
mayton Как там дела с кодировками и с автоматизацией ваших заводов и параходов? Работаем. Владельцем заводов-пароходов пока не стал, но стих думаю угадал. А что есть интересная тема для обсуждения? Вы же инженер программного обеспечения (Software Engineer), а настоящему инженеру всегда есть что сказать. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 17:24 |
|
|
start [/forum/topic.php?fid=57&msg=39902501&tid=2017494]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 124ms |
0 / 0 |