RUS  ENG 

Помогите с написанием модуля для Zulu

Страницы: 1
RSS
Помогите с написанием модуля для Zulu
 
Люди - кто нибудь писал модули для Zulu на Borland visual C++ 6.0?
Если кому не сложно подскажите как это делается.
Желательно с минимальным подключением ненужных модулей - что бы проще было разобраться...
Взарание спасибо !
 
Stalker, а то что я посылал не подошло ?
Какие конкретно проблемы возникли ?
Кстати, что же именно у вас стоит Borland C++Builder 6.0 или Microsoft Visual C++ 6.0. Или же Borland C++ 5.0. А ?
 
Douser, Ой чет блин я точно ступил конкретно стоит Borland C++Builder 6.0
Но это сути не меняет - в общем я дошел вот до этого:
понял что оказывается нада создавать не CLX модуль а обычный ActiveX...
в принципе структура строк идентичка версии 5.0 Borland-а, но .... я пытался вставить те строчки из той верии что вы мне прислали - и программа начала выдавать ошибки ...
А о этого в принципе я этот модуль подключал к зулу (голый модуль), но она там написала что типа модуль не сделан для исвользования в зулу что то в этом роде - ну оно и понятно ....

Вопрос другой ... я посмотрел ту версию что вы мне прислали и там были подключены два файла Zulu_TLB.h ZuluLib_TLB.h и еще несколько файлов там лежит - так вот вопрос их нада подключать или нет ?
И как вообще сделать самый минимальный ActiveX модуль ?
 
<Stalker>, на страничке http://www.politerm.com.ru/zulu5doc/plugindelphisteps.htm описано как создать плагин к Zulu в виде ActiveForm. Описание приведено для Delphi по шагам (Steps), но смысл идентичен и для Builder'а. Создав голый ActiveX элемент мы уже выполнили Шаг 0 из указанной инструкции. Надо теперь добавить нужные методы к элементу, чтобы в ним могла общаться Zulu и зарегистрировать его в Реестре (Registry).
А дальше конечно нужно подключать Zulu_TLB.h и ZuluLib_TLB.h, чтобы пользоваться свойствами и методами объектов Zulu (они объявляются в этих файлах).
 
Douser, В общем примерно все понятно... :) примерно...
Тока вот следущее-->

Добавим в наш элемент SamplePlugin два метода связи с Zulu: ConnectZuluPlugin и DisconnectZuluPlugin. Откроем редактор библиотеки типов (меню View | Type Library) и добавим методы в интерфейс ISamplePlugin:
function ConnectZuluPlugin( Conn: IUnknown): Integer;
------
> С этим проболем нету..
-------
и
procedure DisconnectZuluPlugin;
>> так как с сишнике нет процедур то это тоже стало функцией
-------
Параметр метода ConnectZuluPlugin - объект связи с Zulu, IPluginConnector. Для получения доступа к нему просто запросим этот интерфейс у Conn и сохраним в переменной FConnector:
Conn.QueryInterface( IID_IPluginConnector, FConnector);
В дальнейшем этот объект освободим в методе DisconnectZuluPlugin:
FConnector := nil;
-------
ВОт тут начинаются вопросы - где это сделать в самой программе или где ?
-----


Далее добавим метод, который будет выполняться при команды при вызове команды модуля из Zulu. Назовем этот метод PluginMethod1. Т.о. метод будет выглядеть как:
function PluginMethod1: Integer;

-----
это тоже все вроде понятно..
-----

Далее если в реестре писать ключь у Commands -> Open то он почему то перестает видеть это в плагинах (у зулу)....
Если делаю вместо Open, ShowForm (как в вашем примере) то все нормально ...
Это вообще важно или нет .....

Далее привызове модуля из зулу она выдает следущее: Внутренняя ошибка приложения..

может чем нибуть поможите ? :)

Да и еще... в вашем примере в тексте программы есть такое:


// Dmitry Oseroff:
STDMETHODIMP TPluginFormImpl::DisconnectZuluPlugin()
{
try
{
m_VclCtl->OnDisconnect();
}
catch(Exception &e)
{
return Error(e.Message.c_str(), IID_IPluginForm);
}
return S_OK;
};


// Dmitry Oseroff:
STDMETHODIMP TPluginFormImpl::OnZuluEvent(long nEventID, LPUNKNOWN Source,
VARIANT Param1, VARIANT Param2, VARIANT Param3, VARIANT_BOOL* RetVal)
{
try
{
if( m_VclCtl->OnZuluEvent( nEventID, Source,
*(VARIANT*)&Param1, *(VARIANT*)&Param2, *(VARIANT*)&Param3) )
*RetVal = VARIANT_TRUE;
else
*RetVal = VARIANT_FALSE;
}
catch(Exception &e)
{
return Error(e.Message.c_str(), IID_IPluginForm);
}
return S_OK;
};


Это добавляется в ручную или как то еще ?
если в ручную - то выдает ошибку...
 
ТАК - стоп .....
кажися разобрался ....
НО ! теперь плагин вызывается и тут же закрывается....

видимо нужно прописыавть эти две функции ...
// Dmitry Oseroff:
void TPluginForm::OnConnect( IDispatch *Conn)
{
m_ptrConnector = Conn;
m_ptrConnector->SetEventSink( (IDispatch*)m_ComCtl );
}

// Dmitry Oseroff:
void TPluginForm::OnDisconnect()
{
m_ptrConnector->SetEventSink( NULL );
}

------
но если их прописать то выдается ошибка... !?!?!?
 
Все - большое спасибо вроде все сам разобрался ;)
 
Пытаюсь написать модуль для Zulu в Visual Studio.net 7.0 (Visual Basic)
Объясните мне как проделать нижеследующее, пробовала - не получается, и где
писать этот код, в каком месте???

(Шаг 4. Выбор пути к файлу карты пользователем
"Путь к файлу карты может выбирать и пользователь через стандартное окно выбора файла. Окно выбора файла с маской открываемого файла вызывается методом ShowOpen элемента управления ZuluCommDlg.
Для этого необходимо:
1. Установить на форме элемент управления ZuluCommDlg и командную кнопку CommandButton.
2. Для кнопки Command1 написать следующий код:

Private Sub Command1_Click()
If ZuluCommDlg1.ShowOpen(1) Then
MapCtrl1.MapPath = ZuluCommDlg1.FileName
End If
End Sub)
 
Zest, Visual Basic .NET мы в руках не держали, но думается, что там достаточно дважды щелкнуть по кнопке в дизайне формы, чтобы открылось окно кода, где автоматически вставляется заготовка обработчика события Click. В тело этой процедуры и нужно вставить приведеный пример кода:
(
If ZuluCommDlg1.ShowOpen(1) Then
MapCtrl1.MapPath = ZuluCommDlg1.FileName
End If
)
Страницы: 1