С помощью управления ActiveX в контейнере для окна браузера, как я могу обнаружить, когда пользователь изменяет вкладку вдали от управления ActiveX

StackOverflow https://stackoverflow.com/questions/2338071

Вопрос

У меня есть контроль ActiveX, который помещается в контейнер браузера IE. Управление создает еще одно диалоговое окно, в котором есть свойства WS_POPUP и WS_LAYERED, чтобы иметь возможность использовать функцию SetLayeredWindowAttributes (...) для выполнения прозрачности цвета клавиш и альфа -смешивания поверх управления.

Поскольку свойство ws_layered не может использоваться в сочетании со свойством WS_CHILD, управление видимостью окна не является автоматическим. Мне нужно иметь возможность обнаружить, когда управление ActiveX больше не видно (т.е. потому что вкладка браузера была изменена или сведена к минимуму), чтобы я мог изменить видимость окна наложения.

Я попытался использовать некоторые из существующих оконных сообщений (WM_), чтобы определить это изменение, но не видел их стрельбы, когда изменяется вкладка браузера IE. Кто -нибудь знает лучший способ захватить, когда происходят эти изменения видимости?

Это было полезно?

Решение

Если вы не видите WM_SHOWWINDOW Уведомление, тогда ваше окно покрывается, а не скрыто. Нет сообщения Windows, которое сообщит вам, когда ваш контроль ActiveX будет покрыт. Вам нужно искать уведомления из браузера.

Или придумайте решение, которое не использует окно ws_popup. Возможно, вы могли бы использовать Альфабленд Чтобы сделать свой собственный цветовой ключ, а не полагаться на подразумеваемое альфаблендское поведение SetlayeredWindowattributes.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top