مع عنصر تحكم 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. ربما يمكنك استخدام alphablend للقيام بمفتاح الألوان الخاص بك بدلاً من الاعتماد على سلوك Alphablend الضمني لـ setLayeredWindowAttributes.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top