Как найти окно SW_SHOW/SW_HIDE статус

Я пытаюсь определить видимость окна, которая была скрыта или включена с помощью CWnd:: ShowWindow(). (или:: ShowWindow (hWnd, nCmdShow))

Я не могу просто использовать:: IsWindowVisible (hWnd), поскольку элемент управления находится на листе вкладки, который сам может быть отключен, в результате чего IsWindowVisible возвращает FALSE.

Есть ли способ получить статус окна SW_SHOW/HIDE (или других) или мне нужно использовать значение retun для ShowWindow() и reset соответственно?

изменить: поскольку элемент управления включен (или отключен) для отображения, но может не отображаться в настоящее время, поскольку вкладка переключена ot, я бы подумал, что статус SW_SHOW останется прежним, даже если само окно фактически не включено. Я нереалистичен в своих ожиданиях, что это прекрасно.

Так что действительно я ищу "может показать это окно/управление"

Ответы

Ответ 1

Используйте GetWindowPlacement. Он заполняет структуру WINDOWPLACEMENT, которая имеет поле showCmd.

showCmd
    Указывает текущее состояние отображения окна. Этот член может быть одним из следующих значений.

Ответ 2

Вызвать GetWindowLong( handle, GWL_STYLE), проверить возвращаемое значение для присутствия стиля WS_VISIBLE.

Ответ 3

Я бы использовал GetWindowPlacement, но я не уверен, понял ли я, что вы хотите. Он заполняет структуру WINDOWPLACEMENT, а затем использует член showCmd.

Ответ 4

GetWindowPlacement() функция будет работать только в том случае, если окно максимально или минимизировано. В противном случае член showCmd будет возвращать SW_SHOWNORMAL также, когда окно скрыто, как указано в этом ответе StackOverflow: showCmd WINDOWPLACEMENT... всегда 1?

Вы можете использовать более простую логическую функцию IsWindowVisible(), чтобы получить, если указанное Окно находится в видимом состоянии или нет.

Ответ 5

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

Примечание

Функция WindowFromPoint не извлекает дескриптор скрытого или отключенное окно, даже если точка в окне. Приложение следует использовать ChildWindowFromPoint функция для неограниченного поиска.

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