Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

MS Agent in Builder

14K
05 апреля 2006 года
tolstyak
1 / / 28.10.2005
Дорогие друзья! Подскажите плиз как сделать агента (как в Word и Excel) в Builder, в Delphi у меня это никаких проблем не составило, написал прогу за 20 минут. С паскалем все просто:
Код:
...
Agent1: TAgent;
Req: IAgentCtlRequest;{Будет хранить текущее действие персонажа}
Chars: IAgentCtlCharacterEx;{Хранит сам персонаж для обращения к нему}
...
procedure TForm1.FormCreate(Sender: TObject);
begin
 Agent1.Characters.Load('MyAgent', 'c:\mnature.acs');
 Agent1.Connected:=true;
 Chars:= Agent1.Characters.Character('MyAgent') as IAgentCtlCharacterEx;
 Req:=Chars.MoveTo(form1.Top+form1.Width+40, form1.Top,0);
 Req:=Chars.Show(0);
end;

----------------------------------------------
Вот, все просто в паскале.
Но в СИ++
 
Код:
TAgent *Agent1;
Agent1=new TAgent(?????????????????)


Так вот вопрос: что передавать в констуктор????
Два часа парился и думаю что-то типа того должно быть:

 
Код:
Agent1 = new TAgent(Application);
 tagVARIANT str2;
 str2.bVal = (wchar_t )"MyAgent";
 str2.vt=VT_LPWSTR;

 Agent1->Characters->Load((wchar_t *)"MyAgent",str2);
Agent1->Connected=true;
Agent1->Show();

Но это не работает, может кто-нибудь пробовал.
Заранее спасибо большое.
1
05 апреля 2006 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by tolstyak
Дорогие друзья! Подскажите плиз как сделать агента (как в Word и Excel) в Builder, в Delphi у меня это никаких проблем не составило, написал прогу за 20 минут. С паскалем все просто:

...
Agent1: TAgent;
Req: IAgentCtlRequest;{Будет хранить текущее действие персонажа}
Chars: IAgentCtlCharacterEx;{Хранит сам персонаж для обращения к нему}
...
procedure TForm1.FormCreate(Sender: TObject);
begin
Agent1.Characters.Load('MyAgent', 'c:\mnature.acs');
Agent1.Connected:=true;
Chars:= Agent1.Characters.Character('MyAgent') as IAgentCtlCharacterEx;
Req:=Chars.MoveTo(form1.Top+form1.Width+40, form1.Top,0);
Req:=Chars.Show(0);
end;

----------------------------------------------
Вот, все просто в паскале.
Но в СИ++
TAgent *Agent1;
Agent1=new TAgent(?????????????????)


Так вот вопрос: что передавать в констуктор????
Два часа парился и думаю что-то типа того должно быть:

Agent1 = new TAgent(Application);
tagVARIANT str2;
str2.bVal = (wchar_t )"MyAgent";
str2.vt=VT_LPWSTR;

Agent1->Characters->Load((wchar_t *)"MyAgent",str2);
Agent1->Connected=true;
Agent1->Show();

Но это не работает, может кто-нибудь пробовал.
Заранее спасибо большое.


TAgent - это что? Компонент? Твой класс? Или?
MSAgent - СОМ-интерфейс - соответственно вызывать его надо как СОМ-интерфейс. Если это компонент - тогда наверное проще обратится к разработчику или докам, по вопросам что передавать в конструктор.
Если надо пример как работать с агентом через СОМ, дома гляну свой код, сброшу завтра. Единственная проблема - я так и не разобрался как инициализировать сообщения ввиде балона - возможно используя окно типа tooltip32 - не знаю.

520
04 мая 2006 года
inkognitum
155 / / 03.05.2006
Вот на исходничек...
Код:
IAgentCtlCharacterEx *Character_;
IAgentCtlRequest *Request;
IAgentCtlAnimationNames* AnimationNames;

Agent1->Connected = true;
Request = Agent1->Characters->Load((BSTR)Agent1);
Character_ = (IAgentCtlCharacterEx*)Agent1->Characters->Character(BSTR(Agent1));
Character_->MoveTo(500,365, (Variant)0);
Character_->Show((Variant)false);
Character_->Balloon->set_FontSize(14);
Character_->Play((Variant)"Greet"); // помохать.
Character_->Think(Variant(message));
Character_->MoveTo(0,365, (Variant)1500);
Character_->Play((Variant)"Announce");
Character_->MoveTo(0,0, (Variant)1500);
Character_->Play((Variant)"Suggest");
Character_->MoveTo(300,300, (Variant)1500);
Character_->MoveTo(100,300, (Variant)1500);
Character_->GestureAt(800,300);
Character_->Hide((Variant)false);

только вот я так и не понял как там модельку подгружать.... т.е. грузиться стандартный Мерлин...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог