Introduction
Apologies in advance about my English and the brief descriptions, as my native language is German. I demonstrate a class to use MS-Agents instead of MessageBox
es to communicate with users. The following features are included:
- simple command interface.
- serialize all commands.
- support scripting.
- can interact with user through mouse events.
Using the code
class cAgent
cAgent (char *Character = NULL);
Create a Agent object. Character can be a *.acs file. NULL
uses the default character from system.
bool Command (char *Command);
Push a Command to the Queue. Commands are case sensitive, Parameters and Values are not.
Command | Parameter | Values [defaults] |
Speak
| Text | |
Think | Text | |
Play | AnimationName | |
MoveTo | xPos yPos Speed | {number}{number}{[0]|> 0} |
MoveTo | Position Speed | {center|lefttop|leftbottom|righttop|rightbottom}{[0]|>0} |
Move | DeltaX DeltaY Speed | {number}{number}{[0]|>0} |
Show | Speed | {[slow]|fast} |
Hide | Speed | {[slow]|fast} |
Size | xSize ySize | {number}{number} |
Resize | | |
Name | Name for Character | |
Language | Language | {german|american|english} |
Menu | ShowAutoPopup | {[off]|on} |
Sounds | AnimationSounds | {[on]|off} |
Volume | channel switch | {master|wave}{[on]|off|reset|volume in percent} |
Phrase | FileName | {[Phrases.txt]} |
Execute | Executable [Parameter] | |
Shell | ["Verb"] File | |
Stop | | |
Quit | | |
bool Script (char *IniFile,char *Key);
Execute a script. Scripts are Sections from Windows .ini files :
An additional command available from scripts is :
Command | Parameter | Values [defaults] |
Goto
| a key in this script file | |
Sample Script File :
[FIRST]
MoveTo Center 0
Show Slow
Play Greet
[HALLO]
Goto First
Speak Hallo !
Hide Slow
[GOODBY]
Goto First
Speak Goodby !
Hide Slow
Quit
void GetIdle (void);
Wait for Queue is empty.
void GetQuit (void);
Wait for Quit command and terminate. You can't use the cAgent
Object after GetQuit()
.
virtual void Click (teMouseEventKeys keys,tMousePosition p);
virtual void DblClick (teMouseEventKeys keys,tMousePosition p);
Overwrite this functions to get response from Agent. A window created from here will be destroyed with the cAgent
object.
Click()
will be called before DblClick()
, to avoid this use the next four functions.
virtual void LeftClick (teVirtualKeys key,bool SysTray);
virtual void RightClick (teVirtualKeys key,bool SysTray);
virtual void LeftDblClick (teVirtualKeys key,bool SysTray);
virtual void RightDblClick (teVirtualKeys key,bool SysTray);
Overwrite this functions to get response from Agent. This functions would be executed from a thread that terminate on return XXClick()
. A window created from here will be destroyed after return !
The simplest way to use :
#include "cAgent.h"
extern "C" int PASCAL WinMain (HINSTANCE i,HINSTANCE prev,
LPSTR cmd,int show) {
cAgent *Agent = new cAgent();
Agent->Command ("MoveTo Center 0");
Agent->Command ("Show Slow");
Agent->Command ("Play Greet");
Agent->Command ("Speak Hallo world !");
Agent->Command ("Play RestPose");
Agent->Command ("Hide slow");
Agent->GetIdle ();
delete Agent;
return ERROR_SUCCESS;
}
Other classes used from cAgent
cAgentCommands
Covers the commands from cAgent
.
cAgentSink
Controls the queue that will serialize the commands. Raise mouse and bookmark events.
Queue
A simple circular buffer to hold the commands.
cMMControl , cPhrase
cMMControl
controls the system audio mixer. cPhrase
picks a random phrase from a simple formatted text file.
Points of Interest
History
- 15 Sep 2003 Initial release
- 24 Sep 2003 Updated sourcecode
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.