OleControl создан для неправильного типа - только при использовании в Reg Free COM? - PullRequest
5 голосов
/ 20 мая 2010

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

Я хочу использовать reg free COM и создать необходимые файлы манифеста. Теперь он загружается и отображается в неактивном состоянии, пока я дважды не нажму или не активирую его грамматически. Я не думаю, что это имеет какое-либо отношение к файлам reg free com manifest. Однако есть ли что-то, что мне нужно сделать, чтобы настроить его до / после совершения позднего связывающего вызова 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, также приветствуются.

1 Ответ

0 голосов
/ 13 ноября 2012

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

...