文章类型: VC&C++
关键词: MFC,ActiveX,OCX,控件,字符串,网页,JS,HTML
内容摘要: MFC中的ActiveX和OCX控件传递字符串给网页上的JS

MFC中的ActiveX和OCX控件传递字符串给网页上的JS

2018/5/30 9:12:28    来源:apple    阅读:

第一步:

KSDLL2.idl文件中

dispinterface _DKSDLL2
{
    properties:
    methods:
        [id(1)] void CheckIt();
        [id(2)] BSTR GetIt();
};

第二步:

KSDLL2Ctrl.h文件中

protected:
    void CheckIt(void);
    BSTR GetIt();

第三步:

KSDLL2Ctrl.cpp文件中

// 调度映射
 
BEGIN_DISPATCH_MAP(CKSDLL2Ctrl, COleControl)
    DISP_FUNCTION_ID(CKSDLL2Ctrl, "CheckIt", dispidCheckIt, CheckIt, VT_EMPTY, VTS_NONE)
    DISP_FUNCTION_ID(CKSDLL2Ctrl, "GetIt", dispidGetIt, GetIt, VT_BSTR, VTS_NONE)
END_DISPATCH_MAP()

第四步:

KSDLL2Ctrl.cpp文件中

BSTR CKSDLL2Ctrl::GetIt()
{
    CString  strmac;
    strmac="12345123451234512345";
    return strmac.AllocSysString();
}

第五步:

html文件中

var obj = document.getElementById("Object1");
var result = obj.GetIt();
alert(result);


再举例进行说明一下:

在OCX项目中的C×××Ctrl类的.h中定义

// Dispatch maps
	//{{AFX_DISPATCH(CSuperHolterCtrl)
		// NOTE - ClassWizard will add and remove member functions here.
		//    DO NOT EDIT what you see in these blocks of generated code !
	//}}AFX_DISPATCH
	DECLARE_DISPATCH_MAP()
	
    //作用:获取患者的PDF报告文件名称
    afx_msg BSTR GetReportPDFFileName();

// Event maps
	//{{AFX_EVENT(CSuperHolterCtrl)
		// NOTE - ClassWizard will add and remove member functions here.
		//    DO NOT EDIT what you see in these blocks of generated code !
	//}}AFX_EVENT
	DECLARE_EVENT_MAP()

public:
	enum {
		//{{AFX_DISP_ID(CSuperHolterCtrl)
		// NOTE: ClassWizard will add and remove enumeration elements here.
		//    DO NOT EDIT what you see in these blocks of generated code !
	//}}AFX_DISP_ID
		dispidSetPatientData = 1L,
		eventidFinishReport = 2L,
		dispidGetReportPDFFileName = 3L,
		dispidGetReportXMLFileName = 4L
	};

在C×××Ctrl类的.cpp中定义

/////////////////////////////////////////////////////////////////////////////
// Dispatch map
BEGIN_DISPATCH_MAP(C×××Ctrl, CActiveXDocControl)
	//{{AFX_DISPATCH_MAP(CSuperHolterCtrl)
	// NOTE - ClassWizard will add and remove dispatch map entries
	//    DO NOT EDIT what you see in these blocks of generated code !
	//}}AFX_DISPATCH_MAP
	//作用:获取患者的PDF报告文件名称
	DISP_FUNCTION_ID(C×××Ctrl, "GetReportPDFFileName", dispidGetReportPDFFileName, GetReportPDFFileName, VT_BSTR, VTS_NONE)
END_DISPATCH_MAP()


//作用:获取患者的PDF报告文件名称
BSTR C×××Ctrl::GetReportPDFFileName()
{
    CString reportPDFFileName;
    CMainFrame *pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd;
    CHolterDoc*pDoc = (CHolterDoc *)pFrame->GetActiveDocument();
    reportPDFFileName = pDoc->m_PDFFileName;
    return reportPDFFileName.AllocSysString();
}


在引用Ocx控件的地方,其IDispatch 包装器类中,定义

// 操作
public:
// _DSuperHolter

// Functions
//

	//作用:获取患者的PDF报告文件名称
	CString GetReportPDFFileName()
	{
		CString reportPDFFileName;
		InvokeHelper(0x3, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&reportPDFFileName, NULL);//适合无输入参数,有返回值的调度接口
		return reportPDFFileName;
	}
↑ 上一篇文章:MFC中如何在Ocx控件中来驱动ocx事件 关键词:如何,Ocx,控件,驱动,ocx,事件 发布日期:2018/5/29 17:10:30
↓ 下一篇文章:win7提示在此页面上的Activex控件交互可能不安全怎么办 关键词:win7,提示,在此页面上,Activex,控件,交互,.. 发布日期:2018/6/1 14:58:45
相关文章:
MFC中OCX控件使用到的InvokeHelper()函数用法 关键词:MFC,OCX,控件,InvokeHelper(),函数,用法 发布日期:2018-05-29 16:46
MFC OCX 控件事件的添加和处理 关键词:VC,C++,MFC,OCX,控件,事件,添加,处理 发布日期:2018-05-29 15:23
js判断是否为空(二) 关键词:js,javascript,判断,空,Null,NULL,null,字符串,实例 发布日期:2015-07-29 14:01
相关目录:.NETVC&C++
我要评论
正在加载评论信息......