我看过一些在VC中调用Microsoft Agent控件的文章,一般是基于对话框的,即在对话框中插入“Microsoft Agent control2.0”控件,为该控件建立成员变量(m_sysAgent)后,再用该成员变量调用agent的相应方法。如代码(部分)所示:
void CDLG_MyDlg::DoDataExchange(CDataExchange* pDX)
{
   CDialog::DoDataExchange(pDX);
   //{{AFX_DATA_MAP(CDLG_MyDlg)
   DDX_Control(pDX, IDC_CONTROL1, m_sysAgent);
   //}}AFX_DATA_MAP
}BEGIN_MESSAGE_MAP(CDLG_MyDlg, CDialog)
   //{{AFX_MSG_MAP(CDLG_MyDlg)
   ON_BN_CLICKED(IDC_PLAY, OnPlay)    
   //}}AFX_MSG_MAP
END_MESSAGE_MAP()BOOL CDLG_MyDlg::OnInitDialog() 
{
   CDialog::OnInitDialog();   COleVariant iv("0");
   m_Characters=m_sysAgent.GetCharacters();
   m_Request=m_Characters.Load("Merlin",COleVariant ("C:\\WINNT\\msagent\\chars\\Merlin.acs"));
   m_Ex=m_Characters.Character("Merlin");
   m_Ex.Show(iv);   return TRUE;  // return TRUE unless you set the focus to a control
        // EXCEPTION: OCX Property Pages should return FALSE
}void CDLG_MyDlg::OnPlay() //play 按钮的响应函数
{
   m_Ex.Play("Announce");
}//头文件中的定义
protected:
CAgentCtlCharacters m_Characters;
CAgentCtlCharacterEx m_Ex;
CAgentCtlRequest m_Request;以上三个类是向工程添加“MicrosoftAgentcontrol2.0”控件时自动导入到工程的。问题:我需要在主程序(MainFrame)中让agent显示或做动作(如响应菜单项或定时器中),而不用依赖对话框中的按钮控件等等,但主框架无法象对话框那样插入相应控件,怎么办?