2010-05-20 3 views
4

У меня есть элемент управления ActiveX (созданный с использованием C#), который я добавляю к форме в Visual FoxPro с использованием позднего связывания. Он работает без проблем, когда я регистрирую элемент управления.Загрузка ActiveX, но не правильная активация (только при использовании в Reg Free COM)

Я хочу использовать reg бесплатно COM и создал необходимые файлы манифеста. Теперь он загружается и отображается в неактивном состоянии до тех пор, пока я не дважды щелкнуть или программно активировать его. Я не думаю, что это имеет какое-либо отношение к файлам манифеста reg free com. Однако есть ли что-то, что мне нужно сделать, чтобы настроить его до/после создания позднего связывания вызова AddObject()?

this.AddObject('OleControl1', 'oleControl', 'SomeCompany.SomeOleControl') 

Когда я проверить OleTypeAllowed свойство OleControl создаваемого AddObject() это 1 (Embedded OLE-объект) вместо -2 (объект ActiveX). Таким образом, OleControl получил экземпляр неправильного типа.

Я также попытался следующие:

  1. DEFINE (г) подкласс OleControl и установить свойство OleTypeAllowed = -2. Используется поздняя привязка для загрузки элемента управления. Он не работал должным образом. OleTypeAllowed вернулся как 1
  2. Зарегистрировал элемент управления ActiveX. Добавлен элемент управления ActiveX для проекта в качестве подкласса с использованием визуального редактора. Незарегистрированный контроль. Используется поздняя привязка для загрузки элемента управления. Он не работал должным образом. OleTypeAllowed вернулся как 1.

Можно ли загрузить OleControl в качестве элемента управления ActiveX? Также будет оценен любой вход от VB, который я могу преобразовать в FoxPro.

+1

Не могли бы вы добавить файлы манифеста, которые вы используете для Reg-Free COM? – jveazey

ответ

0

Возможно, у вас есть неправильный атрибут miscStatusContent. Это отрывок из VB6 приложения манифеста мы разместим:

<file name="External\COMCTL32.OCX"> 
    <typelib tlbid="{6B7E6392-850A-101B-AFC0-4210102A8DA7}" version="1.3" flags="control,hasdiskimage" helpdir="" /> 
    <comClass clsid="{9ED94440-E5E8-101B-B9B5-444553540000}" tlbid="{6B7E6392-850A-101B-AFC0-4210102A8DA7}" progid="COMCTL.TabStrip.1" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,setclientsitefirst"> 
     <progid>COMCTL.TabStrip</progid> 
    </comClass> 
    .... 
</file> 

Обратите внимание, что miscStatus должен быть явно очищен.

Мы используем UMMM для создания манифеста в наших автоматизированных сборках.