假如项目名为MyActivex
1. 插入Dialog:资源视图---项目名---Dialog---右键插入Dialog;
2. 给Dialog添加类:右键Dialog----添加类(例如类名:CMyDlg)----基类选择Dialog;
3. MyActivexCtrl.h包含Dialog类的头文件,绑定CMyDlg:CMyDlg m_mydlg;
4. 添加方法:类视图---MyActivexLib---_DMyActivex---添加---方法;
5. 调用方法显示Dialog:MyActivexCtrl.cpp中新增方法showwin(void),方法主体如下:m_mydlg.DoModal();
6. web调用ActiveX方法:须重写IsInvokeAllowed方法:
BOOL CMyActivexCtrl::IsInvokeAllowed(DISPID dispid)
{
return true;
}
7. 创建无模式对话框:
Dialog属性:style--child,visible---true,boder---Dialog Frame;
类视图---CMyActivexCtrl---消息列表-----WM_CREATE,绑定OnCreate方法
int CMyActivexCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: 在此添加您专用的创建代码
m_CiTClientDlg.Create(IDD_ITCLIENT_DIALOG,this); //注意这里,网上有资料this使用NULL,造成的结果是对话框无反应
return 0;
}
8. 基于MFC的ActiveX,CLASSID位于.idl文件的类消息语句块中。
9. Js中创建ActiveX对象:var obj = new ActiveXObject(xxxx.xxxxx),其中括号内的参数为IMPLEMENT_OLECREATE_EX内的第二个参数,在MyActivexCtrl.cpp中可找到。