Question

J'ai un (COM Interop basé) ActiveX contol que je suis en train d'utiliser avec une inscription gratuite com. Lorsque les charges de contrôle de la commande est inactive (ne répond pas aux événements, le contrôle pas entièrement rendu, etc.).

Après beaucoup de recherche a découvert que je COM objets à l'aide reg-free-com utiliser l'attribut miscStatus pour définir l'état initial pour obtenir activé correctement. Je sais comment l'utiliser avec un comClass ce qui correspond à un objet COM natif.

1) Quel est l'équivalent de ce qui suit pour l'élément clrClass qui correspond à un objet COM-PIA?

<comClass clsid="{qqqqqqqq-wwww-eeee-rrrr-00C0F0283628}"               
    tlbid="{xxxxxxxx-yyyy-zzzz-aaaa-0000F8754DA1}"               
    threadingModel="Both"                  
    progid="SomeCompany.SomeOleControl"               
    description="Some ActiveX Control"
    miscStatus="recomposeonresize,insideout,activatewhenvisible,nouiactivate" >

2) Le client COM J'utilise est Visual FoxPro. Si le (1) n'est pas possible ce que je peux faire dans VFP pour activer le contrôle ActiveX inactif. (Je ne me dérange VB ou C # entrée trop si je peux l'utiliser pour trouver l'équivalent foxpro)

Actuellement, j'essayé ce qui suit

this.AddObject('OleControl1', 'oleControl', 'SomeCompany.SomeOleControl')
this.OleControl1.AutoActivate = 3
this.OleControl1.Visible = .T.
this.OleControl1.SetFocus

Mais je le OleControl1 obtient le focus avant les événements passer comme un clic de souris à ses sous-éléments. Donc, je dois cliquer deux fois sur elle pour faire le nécessaire, en tout temps, il n'a pas le focus. Je voudrais que le contrôle d'agir comme si le « nouiactivate » de la valeur miscStatus est réglée.

3) Est-il un autre moyen d'accomplir ce que je veux faire?

Hans Passant, voici la liste des Assembly.dll.manifest actuelle. La mise en forme dans le commentaire fait illisible.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">

<assemblyIdentity name="Assembly" 
 version="1.0.0.0" type="win32" publicKeyToken="wwwwwwwwwwwwwwww"/>
<clrClass
 name="SomeCompany.SomeOleControl"
 clsid="{qqqqqqqq-wwww-eeee-rrrr-00C0F0283628}"
 progid="SomeCompany.SomeOleControl"
 threadingModel="Both"/>
<file name="Assembly.tlb">
 <typelib
  tlbid="{xxxxxxxx-yyyy-zzzz-aaaa-0000F8754DA1}"
  version="1.0"
  helpdir=""
  flags="hasdiskimage"/>
 </file>
</assembly>
Était-ce utile?

La solution

I vérifié le "OleTypeAllowed" propriété de la OleControl1 et il était 1 (incorporé objet OLE) au lieu de -2 (objet ActiveX). Ainsi, l'objet ne soit pas activée normalement.

ressemble plus il est un problème Visual FoxPro. Je vais poster une nouvelle question à ce sujet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top