...
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;
MS Agent in Builder
Код:
----------------------------------------------
Вот, все просто в паскале.
Но в СИ++
Код:
TAgent *Agent1;
Agent1=new TAgent(?????????????????)
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();
tagVARIANT str2;
str2.bVal = (wchar_t )"MyAgent";
str2.vt=VT_LPWSTR;
Agent1->Characters->Load((wchar_t *)"MyAgent",str2);
Agent1->Connected=true;
Agent1->Show();
Но это не работает, может кто-нибудь пробовал.
Заранее спасибо большое.
Цитата:
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();
Но это не работает, может кто-нибудь пробовал.
Заранее спасибо большое.
Дорогие друзья! Подскажите плиз как сделать агента (как в 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 - не знаю.
Код:
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);
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);
только вот я так и не понял как там модельку подгружать.... т.е. грузиться стандартный Мерлин...