Двойной щелчок по кнопке панели задач занятого свернутого развернутого окна приводит к восстановлению его не развернутого размера-почему?

Я использую WinDirStat для сканирования моего диска D:, и его окно немного медленно и отвечать на запросы. Я свернул уже развернутое окно. Некоторое время спустя я хочу, чтобы проверить прогресс, и я нажимаю на кнопку панели задач WinDirStat. Поскольку он не может мгновенно реагировать, я быстро нажимаю кнопку несколько раз (что может стать двойным щелчком). Наконец, окно показывает, но автоматически восстанавливает свой не развернутый размер.

посмотреть скриншот:
maximized window
Свернуть его и дважды щелкните кнопку на панели задач (выделенный "81% D: - WinDirStat "перед значком" CH") вызывает его становится:
non-maximized window

Это также происходит с другими приложениями, такими как Firefox, Visual Studio и даже Word, когда они не отвечают. Часто наличие не развернутого Firefox особенно раздражает. Я просто замаскировал имена файлов на скриншотах 2 в Photoshop и несколько раз нажал кнопку на панели задач, когда он начинался. Затем я ясно увидел, что сначала он был максимизирован и в следующий раз стал не максимизированным.

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

Почему окно занято волшебным образом становится не развернутым? Как я могу отключить это поведение?

22
задан jingyu9575
01.02.2023 18:18 Количество просмотров материала 3539
Распечатать страницу

1 ответ

Теперь я думаю, что я узнал причину, но я понятия не имею, как это исправить.

для свернутого развернутого окна (отзывчивого или нет), если я Правой Кнопкой Мыши нажму кнопку на панели задач и дважды выберу "восстановить", окно сначала станет не свернутым, а затем станет не развернутым. Это может быть то, что происходит в вопросе.

Если я щелкните левой кнопкой мыши кнопку панели задач, проводник проверяет текущее состояние окна. Если он свернут, будет отправлено сообщение " Restore к ней. Если он показывает, но в фоновом режиме, он будет воспитан. Если он уже находится на переднем плане, он будет свернут.

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

однако, когда окно не отвечает, он не будет реагировать на сообщение "восстановить", и застрял в свернутом состоянии. Если дважды щелкнуть кнопку на панели задач, два сообщения "Restore" будут стоять в очереди, так как проводник всегда видит окно как свернутое. Когда окно наконец оживает, оно начинает обрабатывать ожидающие сообщения. Первое "восстановление" вызывает окно, а второе восстанавливает окно в не развернутом состоянии.

основная проблема заключается в том, что "свернуто" и "развернуто" должно быть два несвязанных свойства окна, но Windows смешивает их и использует то же"восстановление" (SW_RESTORE), чтобы очистить их.

Так далеко я не знаю никакого решения, чтобы исправить поведение. Я попытался контролировать эти "восстановления" (глобально подключив API, такие как PostMessage и Ли msg == WM_SYSCOMMAND), но безуспешно.

0
отвечен jingyu9575 2023-02-03 02:06

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх