|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
teo609 Сделав обработку нажатия кнопки закрытия в NC внешней, в MS получили возможность дополнительного реагирования в этой области ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2019, 05:23 |
|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
CEMb teo609 Сделав обработку нажатия кнопки закрытия в NC внешней, в MS получили возможность дополнительного реагирования в этой области Как я это себе представляю на основе того что видел и насколько помню. Стадия 1. Примерно c Windows 3.1, более ранних я не видел. Обработка кнопки закрытия в NC ведется в приложении, в DefWindowProc. В ней формируется сообщения WM_CLOSE, оно посылается в очередь сообщений, откуда забирается циклом сообщений, и в обработчике приложение должно красиво все закрыть и вызвать PostQuitMessage. Если что зависало ждать можно было полминуты, может и больше, не помню. Стадия 2. Примерно с Windows 98 (SE?). Обработка кнопки закрытия в NC остается в приложении, а снаружи навешивается таймер, который отслеживает попадание в очередь WM_CLOSE, и если прошло достаточно времени и приложение не завершило обработку WM_CLOSE, появляется запрос от системы "кажется, тут зависло, не срубить ли?". Вопрос появлялся емнип секунд через 10. В этих стадиях, если приложение зависало, то повторное нажатие на кнопку закрытия визуально ее не нажимало, она оставалась в верхнем положении, что соответствует зависанию в приложении, в его обработчике WM_CLOSE. Возможно где-то в конце жизни этой 2й стадии было дополнительное окно поверх и в тех же координататх, с целью получить другую кнопку закрытия, и получить от юзера сигнал нажатиями, что зависание никуда не делось. У меня в памяти эти окна сильно не отложились. Может эту фазу стоило бы оформить в списке как 3ю стадию, а то что у меня 3я как 4ю. Стадия 3. Примерно с ХР (SP?). Обработка кнопки закрытия в NC выносится из приложения, сообщение WM_CLOSE теперь формируется не в приложении, но посылается в него, таймаут сокращен до 5-6 секунд, кнопка закрытия, если нажимать повторно, визуально нажимается каждый раз. И теперь если ее нажимать часто, то даже до истечения таймаута можно раньше получить сообщение "похоже зависло". Окна-фантома нет. Т.е. это то как сейчас, по крайней мере я такого окна давно уже не видел. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2019, 11:19 |
|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
petrav Неважно как оно реализовано внутри, важно что программист под SQL почти не задумывается о синхронизации данных. Вот и возьмите функциональный язык. Например, пишите на хаскеле, всё будет из каропки правда, как освоите как сделать простейшие действия ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2019, 14:12 |
|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
Что-то топик переродился в разговор обо всём и ни о чём, так мне кажется. Думаю, пора закрывать эту лавочку. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 11:27 |
|
MS Windows: кнопка Close блокирует GUI
|
|||
---|---|---|---|
#18+
MasterZiv, Она изначально была такая. Кому интересна кнопочка закрытия окна. Закрывает и ладно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 13:31 |
|
|
start [/forum/topic.php?fid=57&msg=39907703&tid=2017494]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 274ms |
total: | 401ms |
0 / 0 |