Ищу TLB

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Jack Ferre
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 132
Зарегистрирован: 17.02.2014 (Пн) 14:31
Откуда: Казахстан, Костанай

Ищу TLB

Сообщение Jack Ferre » 18.03.2014 (Вт) 20:09

Ищу TLB для интерфейса IViewObjectEx.

В инете искал 4 дня - видимо это очень редкий артефакт.
Пытался сам написать - фейл, т.к. плохо владею C++/IDL.

Нашел на MSDN топик с вопросом: "Как скомпилить TLB из OCIDL.IDL?". Ответ от спеца MS такой: "А зачем Вам это нужно?"
TLB используют только VB-писатели?
Последний раз редактировалось Jack Ferre 20.03.2014 (Чт) 7:52, всего редактировалось 2 раз(а).

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Ищу TLB

Сообщение Хакер » 19.03.2014 (Ср) 9:35

Jack Ferre писал(а):IVievObjectEx.
В инете искал 4 дня - видимо это очень редкий артефакт.


Наверное потому, что не Viev, а View.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Jack Ferre
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 132
Зарегистрирован: 17.02.2014 (Пн) 14:31
Откуда: Казахстан, Костанай

Re: Ищу TLB

Сообщение Jack Ferre » 20.03.2014 (Чт) 7:48

Я знаю как пишется слово View, а это лишь опечатка.
Все поисковые системы давно предлагают исправить опечатки, так что в любом случае я искал именно то, что мне нужно.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Ищу TLB

Сообщение arthur2 » 21.03.2014 (Пт) 8:15

А перепровирить-таки не хочешь? С чего поисковикам знать, как пишутся какие-то интерфейсы? Опечатки исправляются в более-менее распространенных запросах
Артур
 
   

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 21.03.2014 (Пт) 12:11

Да что вы оба привязались из-за опечатки в вопросе?

arthur2 писал(а):А перепровирить-таки не хочешь? С чего поисковикам знать, как пишутся какие-то интерфейсы? Опечатки исправляются в более-менее распространенных запросах

А самому проверить, исправляет или нет? Вот я это сразу посмотрел, даже несмотря на то, что понятия не имею про эту tlb.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Ищу TLB

Сообщение arthur2 » 21.03.2014 (Пт) 12:26

Qwertiy писал(а):А самому проверить, исправляет или нет?

Я тоже сразу проверил - не исправляет:
http://yandex.ru/yandsearch?text=IVievO ... 5492&lr=65

А исправленным запросом - находит довольно много ссылок с описанием интерфейса. Нужную тлб точно не найти, поскольку как искать-то, какие в разных тлб ест интерфейсы? А вот сделать нужную тлб по описанию интерфейса, думаю, вполне реально.
Артур
 
   

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 21.03.2014 (Пт) 12:33

arthur2 писал(а):Я тоже сразу проверил - не исправляет

Вот поэтому надо искать в гугле - он исправляет :D

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Ищу TLB

Сообщение arthur2 » 21.03.2014 (Пт) 13:11

Нужно не по интерфейсу тлб искать, а по тому, где этот интерфейс водится :)

http://yandex.ru/yandsearch?text=OpenGL ... 5492&lr=65
И, например: http://www.swiftless.com/tutorials/open ... ivers.html
http://home.pacific.net.hk/~edx/tlb.htm
(тлб-шки по ссылкам не проверял)
Артур
 
   

Jack Ferre
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 132
Зарегистрирован: 17.02.2014 (Пн) 14:31
Откуда: Казахстан, Костанай

Re: Ищу TLB

Сообщение Jack Ferre » 22.03.2014 (Сб) 0:36

Разве это правильно - переводить тему на "Может ли ТС пользоваться поисковиками?"
arthur2 писал(а):где этот интерфейс водится

IViewObject, IViewObject2 водятся в любом ActiveX Control.
IViewObjectEx наследует IViewObject2, IViewObject. Водится в контролах поддерживающих прозрачность.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Ищу TLB

Сообщение Хакер » 22.03.2014 (Сб) 2:23

Jack Ferre писал(а):TLB используют только VB-писатели?

Нет. TLB используются для автогенерации реализации IDispatch во время выполнения (частый приём, мало кто хочет реализовывать IDispatch полностью ручками). Используется. Используются для маршалинга (засовывание UDT в Variant, межапартаментные вызовы (как внутрипроцессные, так и меж-процессные и меж-машинные). Кроме того, MS-овский launguage-extension для C++ пользволяет импортировать сущности из TLB в пространство имён C++-исходника.

Jack Ferre писал(а):Разве это правильно - переводить тему на "Может ли ТС пользоваться поисковиками?"

Разве тебе не кажется, что её надо переводить на «Какие сложности возникают при попытке собрать нужную TLB самостоятельно»?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Ищу TLB

Сообщение ger_kar » 22.03.2014 (Сб) 18:38

Jack Ferre писал(а):IViewObject, IViewObject2 водятся в любом ActiveX Control.IViewObjectEx наследует IViewObject2, IViewObject. Водится в контролах поддерживающих прозрачность.
Водятся - это в смысле вшиты в такие контролы? Если дело обстоит именно так, то может можно просто взять и извлечь эту TLB из ресурсов этого контрола?
Бороться и искать, найти и перепрятать

Jack Ferre
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 132
Зарегистрирован: 17.02.2014 (Пн) 14:31
Откуда: Казахстан, Костанай

Re: Ищу TLB

Сообщение Jack Ferre » 22.03.2014 (Сб) 21:01

ger_kar писал(а):может можно просто взять и извлечь эту TLB из ресурсов этого контрола?

Стандартные интерфейсы OLE/ActiveX в TLB из ресурсов не описаны.

Хакер писал(а):Какие сложности возникают при попытке собрать нужную TLB самостоятельно?

Сначала пыталься скомпилировать OCIDL.IDL, дописав в неё секцию Library. Позже выяснил, что правильнее добавльть importlib("stdole2.tlb"); в свой .odl файл.
Результат:
1. Большое количество <Unsupported variant type> в аргументах функций. Числовые типы я перевел, а вот с указателями на структуры, другие интерфейсы возникают проблемы - "5: Invalid procedure call or argument".
2. Remote-функции, например:
Код: Выделить всё
    [local]
    HRESULT Draw
    (
        [in] DWORD dwDrawAspect,
        [in] LONG lindex,
        [in, unique] void * pvAspect,
        [in, unique] DVTARGETDEVICE *ptd,
        [in] HDC hdcTargetDev,
        [in] HDC hdcDraw,
        [in] LPCRECTL lprcBounds,
        [in, unique] LPCRECTL lprcWBounds,
        [in] BOOL (*pfnContinue)(DWORD dwContinue),
        [in] DWORD dwContinue
    );

    [call_as(Draw)]
    HRESULT RemoteDraw
    (
        [in] DWORD dwDrawAspect,
        [in] LONG lindex,
        [in] DWORD pvAspect,
        [in, unique] DVTARGETDEVICE *ptd,
        [in] DWORD hdcTargetDev,
        [in] DWORD hdcDraw,
        [in] LPCRECTL lprcBounds,
        [in, unique] LPCRECTL lprcWBounds,
        [in] IContinue *pContinue
    );

В Object Browser-е видно только Remote-функции. Мне только им аргументы переписывать или убрать их и описать оригинальные функции?
Последний раз редактировалось Jack Ferre 22.03.2014 (Сб) 21:04, всего редактировалось 1 раз.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Ищу TLB

Сообщение Хакер » 22.03.2014 (Сб) 21:03

Давай начнём с unsupported variant type. Пиши список проблемных методов и аргументов, буду писать, как починить.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Jack Ferre
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 132
Зарегистрирован: 17.02.2014 (Пн) 14:31
Откуда: Казахстан, Костанай

Re: Ищу TLB

Сообщение Jack Ferre » 22.03.2014 (Сб) 22:09

Попытка что-то объяснить заставила еще раз всё продумать. Переписал всё с нуля. Интересующий метод Draw вызывается и рисует то, что мне нужно.
Если руки дойдут перевести до конца выложу TLB (хотя не стоит доверять тому кто пишет TLB в первый раз. Из моих экспериментов - "шаг влево, шаг вправо" приводят к краху IDE/программы) с интерфейсами IViewObjectEx : IViewObject2 : IViewObject.
Но, учитывая активность VB-программистов по этой теме с 98 года, вряд ли она кому-то пригодится. Так как, создавая ActiveX или работая с готовыми, VB выполняет всю автоматизацию за вас. Выходит только меня приспичило мучить эти интерфейсы.

Давай начнём с unsupported variant type. Пиши список проблемных методов и аргументов, буду писать, как починить.

Спасибо за желание помочь.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, SemrushBot, Yandex-бот и гости: 13

    TopList  
cron