Con un controllo ActiveX in un contenitore finestra del browser, come faccio a rilevare quando scheda utente modifica da controllo ActiveX
-
22-09-2019 - |
Domanda
Ho un controllo ActiveX che viene collocato in un contenitore browser IE. Il controllo crea un'altra finestra che ha WS_POPUP e le proprietà WS_LAYERED abilitati per poter utilizzare la funzione SetLayeredWindowAttributes (...) per realizzare colore con chiave trasparenza e fusione alfa sulla parte superiore del controllo.
Poiché la proprietà WS_LAYERED non può essere utilizzato in combinazione con la proprietà WS_CHILD la gestione della visibilità finestra non è automatico. Ho bisogno di essere in grado di rilevare quando il controllo ActiveX non è più visibile (cioè perché la scheda del browser è stato cambiato o minimizzata) così posso cambiare la visibilità della finestra sovrapposta.
Ho cercato di utilizzare alcuni dei messaggi di finestra esistenti (WM_) per determinare questo cambiamento, ma non ho visto li fuoco quando la scheda del browser IE è cambiato. Qualcuno sa il modo migliore per catturare quando questi cambiamenti di visibilità stanno accadendo?
Soluzione
Se non si è visto una notifica WM_SHOWWINDOW
, quindi la finestra viene ricoperta piuttosto che nascosto. Non v'è alcun messaggio di Windows che vi dirà quando il controllo ActiveX è stato coperto oltre. Hai bisogno di guardare per le notifiche dal browser.
o venire con una soluzione che non fa uso di una finestra WS_POPUP. Forse si potrebbe utilizzare AlphaBlend di fare il proprio colore keying piuttosto che fare affidamento sul comportamento AlphaBlend implicita di SetLayeredWindowAttributes.