Как свернуть окно: все способы в Windows и на языке C

Запрос «c свернуть окно» чаще всего означает одно из двух: либо пользователю нужно быстро свернуть окно в Windows с клавиатуры, либо разработчику требуется свернуть окно программно на языке C через WinAPI — функцией ShowWindow с параметром SW_MINIMIZE. Ниже разобраны оба сценария: горячие клавиши, работа мышью и готовый код для сворачивания окна из приложения.

Определитесь с задачей до начала действий: если окно «зависло» и не сворачивается обычными способами, это отдельная проблема, и её решение описано в разделе про неисправности. Если же нужно просто убрать окно на панель задач — хватит одной комбинации клавиш.

Свернуть окно горячими клавишами в Windows

Самый быстрый способ свернуть активное окно — комбинация Win + стрелка вниз. Первое нажатие переводит окно из полноэкранного режима в обычное, второе сворачивает его на панель задач. Если окно уже в оконном режиме, достаточно одного нажатия.

Для сворачивания всех окон сразу используется Win + D (показать рабочий стол). Повторное нажатие возвращает окна обратно. Альтернатива — Win + M, которая сворачивает все окна без возможности обратного восстановления одной комбинацией.

  • ⌨️ Win + ↓ — свернуть активное окно
  • 🖥️ Win + D — свернуть все окна / показать рабочий стол
  • 📉 Win + M — свернуть все окна без возврата
  • 📋 Alt + Пробел, затем N — открыть системное меню окна и свернуть его

Сворачивание окна мышью и через системное меню

Классический способ — кнопка «Свернуть» (значок горизонтальной линии) в правом верхнем углу заголовка окна. Рядом расположены кнопки разворачивания и закрытия, поэтому при быстрой работе легко промахнуться. Если окно закрывается вместо сворачивания, проверьте, не нажимаете ли вы на крестик.

Ещё один вариант — щелчок правой кнопкой мыши по значку окна на панели задач: в контекстном меню доступен пункт «Свернуть». В Windows 11 этот пункт может отсутствовать в меню для уже активного окна — поведение зависит от версии системы.

⚠️ Внимание: некоторые приложения (мессенджеры, плееры) при сворачивании уходят не на панель задач, а в системный трей возле часов. Если окно «пропало», проверьте скрытые значки в трее — программа может продолжать работать в фоне.

Как свернуть окно программно на C (WinAPI)

Для сворачивания окна из программы на языке C используется функция ShowWindow из WinAPI с параметром SW_MINIMIZE. Функции передаётся дескриптор окна (HWND), которое нужно свернуть. Если сворачивается собственное окно приложения, дескриптор обычно доступен в оконной процедуре или сохраняется при создании окна.

Минимальный пример для сворачивания собственного окна:

#include <windows.h>

// hWnd — дескриптор окна, которое нужно свернуть

ShowWindow(hWnd, SW_MINIMIZE);

Для сворачивания чужого окна сначала нужно получить его дескриптор — например, функцией FindWindow по имени класса или заголовку:

HWND hWnd = FindWindow(NULL, L"Калькулятор");

if (hWnd != NULL) {

ShowWindow(hWnd, SW_MINIMIZE);

}

Учтите, что заголовок окна зависит от языка системы и версии приложения, поэтому поиск по заголовку ненадёжен. Для устойчивого поиска лучше использовать имя класса окна, которое можно узнать через инструменты вроде Spy++ из состава Visual Studio.

☑️ Свернуть окно через WinAPI — порядок действий

Выполнено: 0 / 5

Другие параметры ShowWindow и связанные функции

Функция ShowWindow принимает разные константы, определяющие состояние окна. Знание основных значений помогает не только сворачивать, но и восстанавливать окна.

КонстантаДействие
SW_MINIMIZEСворачивает окно на панель задач
SW_RESTOREВосстанавливает окно из свёрнутого или развёрнутого состояния
SW_MAXIMIZEРазворачивает окно на весь экран
SW_HIDEСкрывает окно полностью (без значка на панели задач)
SW_SHOWОтображает скрытое окно

Отдельно стоит функция CloseWindow — несмотря на название, она не закрывает приложение, а именно сворачивает окно. Это историческое название, оставшееся со старых версий Windows. Для полного закрытия используется DestroyWindow или сообщение WM_CLOSE.

Сворачивание в системный трей

Обычный SW_MINIMIZE убирает окно на панель задач. Чтобы приложение сворачивалось в область уведомлений (трей), нужно скрыть окно через ShowWindow(hWnd, SW_HIDE) и добавить значок в трей функцией Shell_NotifyIcon с заполненной структурой NOTIFYICONDATA. При клике по значку окно восстанавливается через ShowWindow(hWnd, SW_RESTORE).

Что делать, если окно не сворачивается

Если кнопка сворачивания неактивна или окно игнорирует команды, возможная причина — приложение работает в полноэкранном эксклюзивном режиме (характерно для игр). Попробуйте комбинацию Alt + Enter, которая во многих играх переключает оконный и полноэкранный режим, либо Alt + Tab для переключения на другое окно.

Другая типичная ситуация — зависшее окно. Признак: заголовок не реагирует, а в диспетчере задач приложение помечено как «Не отвечает». Откройте диспетчер задач через Ctrl + Shift + Esc, найдите процесс и при необходимости завершите его. Учтите, что несохранённые данные при этом будут потеряны.

⚠️ Внимание: если кнопки управления окном пропали у всех приложений сразу, возможная причина — сбой проводника Windows. Перезапустите процесс explorer.exe через диспетчер задач: вкладка «Процессы» → «Проводник» → «Перезапустить».
📊 Какой способ сворачивания окон вы используете чаще всего?
Кнопка в углу окна
Горячие клавиши Win + D или Win + ↓
Клик по значку на панели задач
Сворачиваю программно из своего кода

Сворачивание окон на macOS и Linux для сравнения

На macOS окно сворачивается комбинацией Cmd + M или жёлтой кнопкой в левом верхнем углу окна. Свёрнутое окно попадает в Dock, а не на аналог панели задач. Вернуть его можно кликом по миниатюре в Dock.

В Linux поведение зависит от окружения рабочего стола (GNOME, KDE Plasma и других). Во многих окружениях работает комбинация Super + H или Alt + F9, но точное сочетание нужно проверять в настройках клавиатуры конкретного окружения — единого стандарта здесь нет.

Частые вопросы

Как свернуть все окна, кроме активного?

Используйте комбинацию Win + Home — она сворачивает все окна, кроме текущего. Повторное нажатие возвращает окна на место.

Почему FindWindow возвращает NULL?

Скорее всего, указан неверный заголовок или класс окна. Заголовок должен совпадать точно, с учётом регистра и языка системы. Проверьте реальные значения через утилиту Spy++ или перечислите все окна функцией EnumWindows.

Чем SW_MINIMIZE отличается от SW_HIDE?

SW_MINIMIZE сворачивает окно, но его значок остаётся на панели задач. SW_HIDE полностью скрывает окно — оно исчезает и с панели задач, хотя процесс продолжает работать.

Как свернуть окно игры, если горячие клавиши не работают?

Попробуйте Alt + Tab для переключения на другое окно или Ctrl + Shift + Esc для вызова диспетчера задач. Также проверьте в настройках игры режим «оконный без рамки» — в нём сворачивание обычно работает корректнее, чем в эксклюзивном полноэкранном.

Можно ли свернуть чужое окно из своей программы?

Технически да — через FindWindow и ShowWindow с SW_MINIMIZE, если у процесса достаточно прав. Однако вмешательство в окна других приложений без согласия пользователя считается плохой практикой и может блокироваться защитным ПО.