Ответ 1
Используйте GetWindowPlacement. Он заполняет структуру WINDOWPLACEMENT, которая имеет поле showCmd
.
showCmd
Указывает текущее состояние отображения окна. Этот член может быть одним из следующих значений.
Я пытаюсь определить видимость окна, которая была скрыта или включена с помощью CWnd:: ShowWindow(). (или:: ShowWindow (hWnd, nCmdShow))
Я не могу просто использовать:: IsWindowVisible (hWnd), поскольку элемент управления находится на листе вкладки, который сам может быть отключен, в результате чего IsWindowVisible возвращает FALSE.
Есть ли способ получить статус окна SW_SHOW/HIDE (или других) или мне нужно использовать значение retun для ShowWindow() и reset соответственно?
изменить: поскольку элемент управления включен (или отключен) для отображения, но может не отображаться в настоящее время, поскольку вкладка переключена ot, я бы подумал, что статус SW_SHOW останется прежним, даже если само окно фактически не включено. Я нереалистичен в своих ожиданиях, что это прекрасно.
Так что действительно я ищу "может показать это окно/управление"
Используйте GetWindowPlacement. Он заполняет структуру WINDOWPLACEMENT, которая имеет поле showCmd
.
showCmd
Указывает текущее состояние отображения окна. Этот член может быть одним из следующих значений.
Вызвать GetWindowLong( handle, GWL_STYLE)
, проверить возвращаемое значение для присутствия стиля WS_VISIBLE.
Я бы использовал GetWindowPlacement
, но я не уверен, понял ли я, что вы хотите.
Он заполняет структуру WINDOWPLACEMENT
, а затем использует член showCmd
.
GetWindowPlacement() функция будет работать только в том случае, если окно максимально или минимизировано. В противном случае член showCmd будет возвращать SW_SHOWNORMAL также, когда окно скрыто, как указано в этом ответе StackOverflow: showCmd WINDOWPLACEMENT... всегда 1?
Вы можете использовать более простую логическую функцию IsWindowVisible(), чтобы получить, если указанное Окно находится в видимом состоянии или нет.
Я не знаю, есть ли подходящий метод для этой задачи, но я бы попробовал Функция WindowFromPoint.
Примечание
Функция WindowFromPoint не извлекает дескриптор скрытого или отключенное окно, даже если точка в окне. Приложение следует использовать ChildWindowFromPoint функция для неограниченного поиска.
Например, я бы преобразовал угловые углы управления в экранные координаты, а затем попытался получить его из этих точек.