powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / MS Windows: кнопка Close блокирует GUI
25 сообщений из 156, страница 1 из 7
MS Windows: кнопка Close блокирует GUI
    #39902276
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может не в том разделе спрашиваю, но нет раздела Программирование под Windows.

Много лет наблюдаю интересную картину. Если зажать и держать стандартную (на заголовке окна) кнопку "Закрыть окно", то перестаёт обновляться GUI. Вот запускаем банальный Notepad, зажимаем мышкой кнопку Закрыть и перестаёт мигать курсор.

Почему? И какова механика наблюдаемого явления?

PS: Погуглил слегка, но вроде ничего толкового не нашёл.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902329
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Событие идет на ФАКТ отпускания кнопки. А ты не отпустил.
Вот все и ждуны и ждут))).
Подходит?
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902361
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav,
Событие идет на ФАКТ отпускания кнопки. А ты не отпустил.
Вот все и ждуны и ждут))).
Подходит?

Нет, потому что такое происходит только при зажатии стандартных кнопок на заголовке окна. Остальных кнопок это не касается.

Да и вообще, предположение не логичное с точки зрения очереди событий.

Куча приложений так себя ведёт. Например, тот же Process Explorer от Руссиновича. И Qt приложения так себя ведут. Могу предположить, что зажатие этих кнопок блокирует событие WM_TIMER, например, или вообще всю виндовую очередь событий приложения.

Но почему?
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902371
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Нет, потому что такое происходит только при зажатии стандартных кнопок на заголовке окна
счас зажал кнопку и у меня нет того что ты описал.
"Суслика видишь?" (с)
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902373
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
Нет, потому что такое происходит только при зажатии стандартных кнопок на заголовке окна
счас зажал кнопку и у меня нет того что ты описал.
"Суслика видишь?" (с)

Какая ОС? Какое приложение? На чём написано?

Я только что под Win7 зажал кнопку Закрыть в Process Explorer (видимо чистый WinAPI) и в Qt-приложении. И они перестали обновляться.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902374
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Ооооо. Qt действительно так ведет. А студия нет.
Старье наверно. Так написано. Не многозадачно. Охота тебе голову ломать.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902376
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Студия - меню - Tools - Spy++
Запусти и посмотри класс главного окна.
Топик стартер должен больше работать отвечающих (с)
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902386
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav,
Ооооо. Qt действительно так ведет. А студия нет.
Старье наверно. Так написано. Не многозадачно. Охота тебе голову ломать.

Кстати, да. Студия резво продолжает обновляться... А стандартный Task Manager замерзает. Многопоточность тут, я думаю, не причём.

Самое интересное, сколько я помню так было всегда - начиная с Win95 и WinNT 4.0. И вот спустя десятилетия я решил разобраться. :)
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902395
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Многопоточность тут, я думаю, не причём.
лично я говорил про многозадачность)
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902450
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Win10, блокнот, просто поводил мышем над крестиком - курсор перестал моргать.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902457
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Win10, блокнот, просто поводил мышем над крестиком - курсор перестал моргать.
круто. Полностью перевернуло вопрос автора.
"перекуём баги на фичи"
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902492
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravСтудия резво продолжает обновляться...

Самоочевидный ответ: у студии в заголовке нарисованы ненастоящие кнопки. Поэтому нажатие
на них до DefWindowProc() не доходит.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902497
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего имеет место оптимизация графических действий. Я помню что при drag window старые версии Windows-95
вообще не транслировали состояние окна. Только прозрачную рамку до тех пор пока вы не отпустите ЛКМ. В версиях
типа Windows-98 делался снимок (картинка) окна и фиксировалась то тех пор пока не отпустите ЛКМ тоже.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902501
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

petravСтудия резво продолжает обновляться...

Самоочевидный ответ: у студии в заголовке нарисованы ненастоящие кнопки. Поэтому нажатие
на них до DefWindowProc() не доходит.

Да, у приложений у которых не стандартный заголовок окна, такой фишки не наблюдается. Само собой, я постоянно акцентировал внимание, что кнопки стандартные.

PetroNotC Sharp
petrav,
Студия - меню - Tools - Spy++
Запусти и посмотри класс главного окна.
Топик стартер должен больше работать отвечающих (с)

Про Spy++ я забыл.

У Qt приложения полностью остановилась очередь виндовых сообщений. По логами видно, что QTimer тоже остановился.

У других приложений на С++ очередь виндовых сообщений остановилась на 99%. Остались только WM_MOUSEMOVE и WM_GETICON.

Как и предполагалась MS Windows, видимо, останавливает очередь событий. Но зачем?!
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902513
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
MS Windows, видимо, останавливает очередь событий. Но зачем?!
еще раз сказать?
Факт ОТПУСКАНИЯ КНОПКИ важен. Вы ее не отпустили.
А гуи в одном потоке работает.
Поставь в buttonClick( sleep
Будет заморозка?
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902521
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ помню что при drag window старые версии Windows-95
вообще не транслировали состояние окна.

Любые версии так делают если в настройках производительности снять галочку "Отображать
содержимое окна при перетаскивании".

petravНо зачем?!
Затем, что в MS тоже не поголовно гении, а этот код, скорее всего, никто не трогал со
времён былинных. Так что если там стоит, например, CaptureMouse + свой собственный цикл
обработки сообщений до отпускания кнопки, то... имеем то, что имеем.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902523
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
MS Windows, видимо, останавливает очередь событий. Но зачем?!
еще раз сказать?
Факт ОТПУСКАНИЯ КНОПКИ важен. Вы ее не отпустили.
А гуи в одном потоке работает.
Поставь в buttonClick( sleep
Будет заморозка?

Мне иногда кажется, что ты студент, который вчера на экзамене по программированию пятёрку получил.

Ответь:

- Что общего между зажатой кнопкой и Sleep?

- Почему зажатие других кнопок не приводит к заморозке? И события нормально продолжают идти?
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902527
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Затем, что в MS тоже не поголовно гении, а этот код, скорее всего, никто не трогал со
времён былинных. Так что если там стоит, например, CaptureMouse + свой собственный цикл
обработки сообщений до отпускания кнопки, то... имеем то, что имеем.

Да, у меня тоже было предположение, что это просто глюк который идёт чуть ли не с Win3.11 и который каким-то образом перескочил в семейство WinNT.

Или же это какая-то архитектурная проблема - идеологическая и они просто не могут исправить ошибку проектирования. :)
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902529
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
пятёрку получил
ты знал, ты знал!

petrav
Почему зажатие других кнопок не приводит к заморозке? И события нормально продолжают идти?

У каких других?
Сделай кнопу на окне и посмотри.
Ждем.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902533
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
исправить ошибку проектирования. :)
не вижу ошибки.
Если в винде на событие кнопы Копировать обработчик тормознуть, то кнопа так и будет Не отжата.
Тоже непорядок?
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902543
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpТоже непорядок?

Да, "тормознутие" это непорядок. Но в твоём коде этот непорядок на твоей совести.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902548
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
PetroNotC SharpТоже непорядок?

Да, "тормознутие" это непорядок. Но в твоём коде этот непорядок на твоей совести.конечно.
А то что юзверь тормознул и заснул на кнопе Закрыть окно на чьей совести?
)))
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902567
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как там дела с кодировками и с автоматизацией ваших заводов и параходов?
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902741
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Как там дела с кодировками и с автоматизацией ваших заводов и параходов?

Работаем. Владельцем заводов-пароходов пока не стал, но стих думаю угадал.

А что есть интересная тема для обсуждения? Вы же инженер программного обеспечения (Software Engineer), а настоящему инженеру всегда есть что сказать. :)
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902749
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу кнопки Close? Да так себе тема. Неинтересно.

Я тоже увлекался графическим и геометрическим моделированием но тема юае-строительства меня как-то обошла.
...
Рейтинг: 0 / 0
25 сообщений из 156, страница 1 из 7
Форумы / C++ [игнор отключен] [закрыт для гостей] / MS Windows: кнопка Close блокирует GUI
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]