开发环境:VS.net 2003, WinXP. 项目: MFC ActiveX Control我有两个窗口,ParentDlg, ChildDlg. ParentDlg 其实是用来做ActiveX的 User Interface的。ChildDlg是包含在ParentDlg中的子窗口,它包含了几个button,就像一个panel一样。我用Dialog Editor 打开这个ChildDlg, 在一个button上点鼠标右键,选:Add Event Handler... 就看见Event Handler Wizard 的窗口打开,我选择了 Message Type为BN_Clicked, 然后在右边的Class List(列出了我的Project里面所有的Class) 里面我选择了 CParentDlg 那个class。然后Event Handler Wizard自动生成了 Message_Map :BEGIN_MESSAGE_MAP(CParentDlg, CDialog)
ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)
END_MESSAGE_MAP()OnBnClickedButton1 function也自动生成了。我在其里面加了个AfxMessageBox("hello");可是,运行的时候,点击button,没有messagebox跳出。如果刚开始在Event Handler Wizard 的 class list 里面选择CChildDlg,这个包含button的类它自己,那么messagebox就可以跳出了。是不是Event Handler Wizard 只可以添加event handler给真正包含button的Dialog ?如果这样的话,那个Class List 列表又有什么用处呢?麻烦高人指点,谢谢。

解决方案 »

  1.   

    谢谢loverx(烟花) 的回答。
    不过我是初学者,有些地方还是不是很明白。我的ParentDlg 和 ChildDlg 其实都是在ActiveX里面的,都是Resource. 只是ParentDlg是用来做ActiveX的用户界面的,不是ActiveX的Container。ChildDlg是像一个panel一样的放在ParentDlg上的。当然,他们都是从CDialog继承的。不是很懂您这句:“只有建立了连接的,才可以接收ACTIVEX的回调”。
    我的Dlg都是在ActiveX内部的Resource,如何建立您所说的连接呢?