2010-05-13 28 views
2

J'ai un contrôle ActiveX basé sur WPF (COM interop). Je suis capable de l'utiliser correctement en enregistrant le contrôle. Lorsque j'ai essayé de Reg-Free-COM (en utilisant des fichiers manifest) le contrôle semble être activé, mais les événements (tels que le clic de la souris, RequestBringIntoView etc) ne répondent pas. Fait intéressant, Double-cliquez sur la touche de tabulation et fonctionne.Événements non envoyés au contrôle ActiveX basé sur WPF (COM interop) lors de l'utilisation de Reg-Free-COM

J'ai lu dans cet article http://blogs.msdn.com/karstenj/archive/2006/10/09/activex-wpf-gadget.aspx que "... Ces avantages ont un prix: le contrôle ActiveX doit être enregistré dans le registre, ce qui nécessite une installation comme un fichier .msi. ne peut pas installer ActiveX.Le contrôle ActiveX ne peut pas accéder par COM sans reg ... "

Quelqu'un a-t-il eu une expérience similaire? Quelqu'un peut-il expliquer ce qui se passe?

Détails supplémentaires:
Lorsque le contrôle est activé après son enregistrement, il apparaît comme faisant partie de l'interface utilisateur du client COM. Le contrôle ne reçoit pas de focus, ses éléments le reçoivent. Lorsque vous utilisez reg-free-com, le contrôle ne se charge pas correctement. 1) Le contrôle reçoit le focus au lieu de ses sous-éléments 2) Le contrôle a des zones qui sont noires au lieu de la couleur par défaut 3) lorsque je clique dans et hors du contrôle ou double-clique, ses sous-éléments reçoivent le focus, le contrôle commence à recevoir des événements et les zones noires sont remplacées par la couleur correcte

Répondre

2

J'ai découvert que le contrôle était inactif parce que l'attribut miscStatus qui est défini lors de l'enregistrement COM est nécessaire pour l'activer. Je vais poser une question distincte à ce sujet.