Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема с Activex
Форум программистов > Системное программирование > C, С++ и С Builder > MS Visual C++
jarilo
У меня есть задача - передать некоторые данные из DLL, написанной на С++ в прогу на Java.
Причем данные эти я должен взять из элемента ActiveX.
Насколько я понимаю, ActiveX должен обязательно быть размещен в каком-то окне, класс которого порожден от CWnd. Но проблема еще и в том, что мне не нужно, чтобы пользователь видел этот ActiveXэлемент
Делаю так:
Цитата
CWnd* psWnd=new CStatic;
res=psWnd->Create(_T("STATIC"),(LPCTSTR)"32323",0,CRect(0,0,1,1),pWnd,324);
res=m_Camera.CreateControl(m_Camera.GetClsid(), (LPCTSTR)"sdfdf", 0, CRect(0, 0, 1, 1), psWnd, 2342);
short r=pWnd->m_Camera.Connect(0, 0, 2, 0, (LPCTSTR)"localhost");


m_Camera - объект класса, реализующего интерфейс элемента ActiveX и порожденный от CWnd.
Если вызывать этот код из MFC-приложения, все работает. В DLL работать отказывается.

У меня два вопроса:
1. Почему не работает.
2. Можно ли использовать ActiveX, не создавая окна?
Kmet
попробуй j-interop
skysun
1) Java и ActiveX несовместимы. Надо писать "прослойку" на JNI.
2) в твоем случае без окна не обойтись т.к. ты создаешь контрол.
3) Лучше используй родные Java пакеты - проблем меньше.
jarilo
Цитата(skysun @ 7:08:2008, 05:27 ) *
1) Java и ActiveX несовместимы. Надо писать "прослойку" на JNI.
2) в твоем случае без окна не обойтись т.к. ты создаешь контрол.
3) Лучше используй родные Java пакеты - проблем меньше.


Проблему решил с помощью пакета jacoZoom. Очень хороший продукт - рекомендую. Не нужно никаких DLL к проекту добавлять, только один jar-файл. Есть модуль, который генерит на основе ActiveX код на Java для пользования этим элементом. Все очень просто и понятно. Он правда немного платный, но демо-версия делает все то же, что и лицензионная.
Сравнивал с другими пакетами, из бесплатных - с JACOB, но у него слабая (почти не реализованная) поддержка ActiveX. Из платных - JCOM, но он во-первых создает дополнительную DLL, которую надо вставлять в проект, она к тому же еще и ругаться будет после окончания trial-периода, во-вторых - неоправданно дорог. Пробовал еще несколько пакетов - недостатки те же, что и у первых двух.

Окно все-таки пришлось создать, но я задал его размеры 1х1, и его не видно.

Родные Java-пакеты использовать в моем случае было невозможно, так как ActiveX элемент поставляется вместе с оборудованием, для которого нет Java-пакетов и для которого неизвестны форматы передаваемых данных.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.