基于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提供了大量能使我们快速便捷地处理界面的优美布局。