Есть ли сигнал или событие в Windows Desktop API, которое может сообщить мне, находится ли мое приложение в свернутом состоянии? Я просмотрел документацию по msdn и нашел только события минимизации, которые вызывают, поскольку приложение минимизируется, а не тогда, когда приложение уже завершило минимизацию и находится в окончательном свернутом состоянии.
Мне нужно отключить другую операцию (снимок экрана), когда я знаю, что окно, которое я установил, свернуто и находится вне пути захвата экрана. Я использую сообщение WM_SIZE, чтобы проверить, свернуто ли окно, затем запускаю захват экрана. Моя проблема заключается в том, что я все еще вижу, как закрывается окно приложения, когда делается снимок экрана (то есть анимация минимизации, выполняемая большинством окон приложения), даже несмотря на то, что я получил сообщение SIZE_MINIMIZED посредством обратного вызова ProcessWindowMessage. Мне нужно кое-что, чтобы сказать мне, что приложение полностью свернуто, а не в виде захвата экрана, который я беру со всего рабочего стола.
Спасибо!
Вы, вероятно, хотите IsIconic()
; если ваше окно свернуто, то API вернет ненулевое значение.
Я полагаю, что вы ищете WM_SIZE сообщение. Он будет отправлен после изменения размера окна. Если ваше окно было свернуто wParam
переменная должна быть равна SIZE_MINIMIZED
Вы можете попробовать решение, упомянутое здесь:
Как я могу определить, когда мое приложение свернуто?
~ Чик:
switch (message)
{
case WM_SYSCOMMAND:
if ((wParam & 0xFFF0) == SC_MINIMIZE)
{
// shrink the application to the notification area
// ...
return 0;
}
break;
}
Или попробуйте функцию GetWindowPlacement:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms633518(v=vs.85).aspx
~ надрез
Извлекает состояние показа и восстановленные, свернутые и развернутые позиции указанного окна.