基于MFC的JavaScript进行网页数据交互

目录

前言

一、创建html对话框工程

二、使用步骤

1.引入JavaScript接口代码

2.重写相关接口

3.在html网页中添加C/C++调用的接口

4.在MFC工程中添加调用接口

5.设置确认按键触发调用

6.运行结果

总结


前言

如何快速的进行MFC开发,这里我介绍一种JavaScript与C/C++交互的方式。

一、创建html对话框工程

我这里是基于VS2010的开发环境搭建的,以下的操作均在VS2010中。

二、使用步骤

1.引入JavaScript接口代码

LPDISPATCH m_pDisp;         //判断网页加载
CCallScript pCallScript;    //脚本调用

2.重写相关接口

代码如下(示例):

void CMFCHtmlDlg::OnSize(UINT nType, int cx, int cy)
{
    CDHtmlDialog::OnSize(nType, cx, cy);

    // TODO:  在此处添加消息处理程序代码
    if (m_pBrowserApp != NULL)
    {
        m_pBrowserApp->put_Top(0);
        m_pBrowserApp->put_Left(0);
        m_pBrowserApp->put_Height(cy);
        m_pBrowserApp->put_Width(cx/* - 50*/);
    }
}

void CMFCHtmlDlg::OnNavigateComplete(LPDISPATCH pDisp, LPCTSTR szUrl)
{
    CDHtmlDialog::OnNavigateComplete(pDisp, szUrl);

    // TODO:  在此添加专用代码和/或调用基类
    if (!m_pDisp)
        m_pDisp = pDisp;
}

void CMFCHtmlDlg::OnDocumentComplete(LPDISPATCH pDisp, LPCTSTR szUrl)
{
    CDHtmlDialog::OnDocumentComplete(pDisp, szUrl);

    // TODO:  在此添加专用代码和/或调用基类
    if (m_pDisp && (m_pDisp == pDisp))//判断网页是否真正加载完毕
    {
        IHTMLDocument2* pDoc;
        HRESULT hr = GetDHtmlDocument(&pDoc);
        pCallScript.SetDocument(pDoc);
        pDoc->Release();
        m_pDisp = NULL;//Reset glpDisp
    }
}

BOOL CMFCHtmlDlg::CanAccessExternal()
{
    return TRUE;
}

3.在html网页中添加C/C++调用的接口

4.在MFC工程中添加调用接口

BEGIN_DISPATCH_MAP(CMFCHtmlDlg, CDHtmlDialog)
	DISP_FUNCTION(CMFCHtmlDlg, "HtmlShowJson", CallCplusplus, VT_EMPTY, VTS_UI2)
END_DISPATCH_MAP()
HRESULT CMFCHtmlDlg::CallCplusplus() {
	CSimpleArray<CComBSTR>  paramArray;
	CString msg;
	CComVariant r;
	msg.Format("hello,from C/C++");
	paramArray.Add(msg.GetBuffer());
	pCallScript.Run("HtmlShowJson", paramArray, &r);
	if (r.vt == VT_BSTR)
	{
		CString strValue;
		r.ChangeType(VT_BSTR);
		_variant_t var_t;
		_bstr_t bstr_t;
		var_t = r;
		bstr_t = var_t;
		strValue.Format("%s", (const char*)bstr_t);
		if (AfxMessageBox(strValue, MB_YESNO) == IDYES) {

		}
	}
	else {
		CString strMsg = "HtmlShowJson Error!";
		if (AfxMessageBox(strMsg, MB_YESNO) == IDYES) {

		}
	};
	return S_OK;
}

5.设置确认按键触发调用

HRESULT CMFCHtmlDlg::OnButtonOK(IHTMLElement* /*pElement*/)
{
	CallCplusplus();
	return S_OK;
}

6.运行结果


总结


以上就是今天要讲的内容,本文仅仅简单介绍了在MFC中基于JavaScript的使用,而html提供了大量能使我们快速便捷地处理界面的优美布局。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ya土豆儿~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值