OleControl создан для неправильного типа - только при использовании в Reg Free COM?

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

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

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

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

Я также пробовал следующее:

  1. DEFINE подкласс OleControl и установить свойство OleTypeAllowed = -2. Используется позднее связывание для загрузки элемента управления. Это не сработало, как требовалось. OleTypeAllowed вернулся как 1

  2. Зарегистрировал элемент управления ActiveX. Добавлен элемент управления ActiveX в проект в качестве подкласса с помощью визуального редактора. Отменил регистрацию элемента управления. Используется позднее связывание для загрузки элемента управления. Это не сработало, как требовалось. OleTypeAllowed вернулся как 1.

Можно ли загрузить OleControl как элемент управления ActiveX?

Любой вклад от VB, который я могу преобразовать в FoxPro, также будет оценен.


person embnut    schedule 20.05.2010    source источник
comment
Не могли бы вы добавить файлы манифеста, которые вы используете для Reg-Free COM?   -  person jveazey    schedule 27.05.2011


Ответы (1)


Вероятно, у вас неправильный атрибут 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 для создания манифеста в наших автоматизированных сборках.

person wqw    schedule 13.11.2012