У меня есть элемент управления ActiveX, который помещается в контейнер браузера IE. Элемент управления создает еще одно диалоговое окно с включенными свойствами WS_POPUP и WS_LAYERED, чтобы иметь возможность использовать функцию SetLayeredWindowAttributes (...) для достижения прозрачности с цветовой меткой и альфа-смешивания сверху элемента управления.С элементом управления ActiveX в контейнере окна браузера, как я могу определить, когда пользователь меняет вкладку от элемента управления activex
Поскольку свойство WS_LAYERED не может использоваться в сочетании с свойством WS_CHILD, управление видимостью окна не является автоматическим. Мне нужно определить, когда элемент управления ActiveX больше не отображается (т. Е. Поскольку вкладка браузера была изменена или сведена к минимуму), поэтому я могу изменить видимость окна оверлея.
Я попытался использовать некоторые из существующих оконных сообщений (WM_), чтобы определить это изменение, но не видел, чтобы они срабатывали при изменении вкладки браузера IE. Кто-нибудь знает лучший способ захвата, когда происходят изменения видимости?
Да, уведомление WM_SHOWWINDOW в элементе управления не происходит ни при изменении вкладки, ни даже при уменьшении окна браузера. Как мне перехватить и интерпретировать уведомления из браузера? – flawlesslyfaulted
Я могу создать окно «OWNED», как указано в msdn, но это разрешает проблему минимизации, а не проблему изменения вкладок. http://msdn.microsoft.com/en-us/library/ms632599(VS.85).aspx#owned_windows "-Общее окно всегда находится над его владельцем в z-порядке. -Система автоматически уничтожает принадлежащее ему окно, когда его владелец уничтожается. -Укрытое окно скрыто, когда его владелец сведен к минимуму ». – flawlesslyfaulted
Если браузер не является _giving_ вашим контролем каких-либо уведомлений, вам необходимо искать решение, которое не использует окно WS_POPUP. Я не думаю, что вы сможете что-то сделать надежно. Всплывающее окно просто мертвое, извините. –