С помощью управления ActiveX в контейнере для окна браузера, как я могу обнаружить, когда пользователь изменяет вкладку вдали от управления ActiveX
-
22-09-2019 - |
Вопрос
У меня есть контроль ActiveX, который помещается в контейнер браузера IE. Управление создает еще одно диалоговое окно, в котором есть свойства WS_POPUP и WS_LAYERED, чтобы иметь возможность использовать функцию SetLayeredWindowAttributes (...) для выполнения прозрачности цвета клавиш и альфа -смешивания поверх управления.
Поскольку свойство ws_layered не может использоваться в сочетании со свойством WS_CHILD, управление видимостью окна не является автоматическим. Мне нужно иметь возможность обнаружить, когда управление ActiveX больше не видно (т.е. потому что вкладка браузера была изменена или сведена к минимуму), чтобы я мог изменить видимость окна наложения.
Я попытался использовать некоторые из существующих оконных сообщений (WM_), чтобы определить это изменение, но не видел их стрельбы, когда изменяется вкладка браузера IE. Кто -нибудь знает лучший способ захватить, когда происходят эти изменения видимости?
Решение
Если вы не видите WM_SHOWWINDOW
Уведомление, тогда ваше окно покрывается, а не скрыто. Нет сообщения Windows, которое сообщит вам, когда ваш контроль ActiveX будет покрыт. Вам нужно искать уведомления из браузера.
Или придумайте решение, которое не использует окно ws_popup. Возможно, вы могли бы использовать Альфабленд Чтобы сделать свой собственный цветовой ключ, а не полагаться на подразумеваемое альфаблендское поведение SetlayeredWindowattributes.