Microsoft Agent; Providing a Custom Popup Menu
In this article we will see how to create a custom popup menu for your Microsoft Agent character.
This article was previously published in my blog, Just
Like a Magic.
A second honeymoon with Microsoft Agent. Do you
remember our article Programming
Microsoft Agent in WinForms and
our sample application PartIt? After you have included your desired agent
in your application, are you feeling bad with the default popup menu? If so,
then you are in the right place (welcome :).)
Enough talking, let's get to work! First,
prepare your code that loads the Microsoft Agent and brings it to the screen.
After that, create your
System.Windows.Forms.ContextMenuStrip and add your required items (well,
including "Hide" maybe) and finish the item event handlers.
Now, let's complete it. Get to the code that
loads the agent character (e.g. calls the Characters.Load() method of the agent
control object, AxAgentObjects.AxAgent) and just disable the AutoPopupMenu
flag/property of the character object, AgentObjects.IAgentCtlCharacterEx. This
flag/property determines whether to allow the default popup menu or not.
For example, the following code disables this
| AxAgentObjects.AxAgent agentCtl; |
// initializing 'agentCtl'
// . . .
agentChar = agentCtl.Characters.Character("Merlin");
agentChar.AutoPopupMenu = false;
Next comes the interesting point. When the
character is clicked, the ClickEvent event of the agent control (AxAgent) fires.
So the next step is to handle this event and to provide your code that brings up
your custom context menu. Consider the following code:
| // agentCtl.ClickEvent += agent_ClickEvent; |
public void agentCtl_ClickEvent(object sender, AxAgentObjects._AgentEvents_ClickEvent e)
if (e.characterID == "Merlin") // check for this if you have many characters
if (e.button == 2) // 1 = left, 2 = right
Have a nice Sunday!