Я провел много часов в Google и не нашел каких-либо результатов по этому вопросу.
У меня есть приложение, которое я хочу свернуть, когда пользователь нажимает на него на панели задач (если оно еще не свернуто). Проблема, похоже, связана с тем, что окно не имеет границ. Когда я устанавливаю для него границу, он просто отлично минимизируется при нажатии на панель задач без какого-либо вмешательства кода. Но мне нужно окно без полей, потому что я делаю «пользовательские границы», используя клиентскую область.
tl; dr, как проверить, нажимается ли текущее приложение на панели задач?
Большое спасибо!
Самуил
Не нужно повозиться с панелью задач.
Просто убедитесь, что у вас есть WS_MINIMIZEBOX|WS_MAXIMIZEBOX
стили, установленные для вашего окна. В противном случае ваше окно не будет обрабатывать WM_SYSCOMMAND
с wParam
из SC_MINIMIZE
а также SC_RESTORE
,
Некоторые редакторы ресурсов, такие как в Visual Studio, делают невозможным установку WS_MINIMIZEBOX|WS_MAXIMIZEBOX
когда вы удаляете стандартную границу окна. Вы можете программно добавить стили обратно так:
DWORD style = GetWindowLong( hwnd, GWL_STYLE );
SetWindowLong( hwnd, GWL_STYLE, style | WS_MINIMIZEBOX | WS_MAXIMIZEBOX );
Других решений пока нет …