Con un controllo ActiveX in un contenitore finestra del browser, come faccio a rilevare quando scheda utente modifica da controllo ActiveX

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

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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top