1、设置程序IE内核
在APP.InitInstance()中调用该方法,m_strStylesName程序名
BOOL CIE_SampleApp::SetRegistry(void)
{
CRegKey key;
DWORD dwNum = 0;
DWORD pdwType;
char keyValue[100];
memset(keyValue, 0, 100);
ULONG pnBytes;
//先检查电脑的IE版本
if (key.Open(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Internet Explorer"), KEY_READ) != ERROR_SUCCESS)
{
return FALSE;
}
else
{
key.QueryValue("Version", &pdwType, keyValue, &pnBytes);
keyValue[pnBytes] = '\0';
CString StrVersion = keyValue;
StrVersion = StrVersion.Left(StrVersion.Find("."));
if (StrVersion != ""&&atoi(StrVersion) < 9)//IE浏览器版本<9
{
if (MessageBox(NULL, "Internet Explorer(IE)浏览器内核版本低于9,请更新IE浏览器,是否现在就去更新?", "提示", MB_YESNO) == IDYES)
ShellExecute(NULL, _T("open"), _T("http://windows.microsoft.com/zh-cn/internet-explorer/download-ie"), NULL, NULL, SW_SHOWMAXIMIZED);
return TRUE;
}
}
if (key.Open(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_BROWSER_EMULATION")) != ERROR_SUCCESS)
return FALSE;
else
key.QueryDWORDValue(m_strStylesName, dwNum);
if (dwNum < 0x0000270f)//获得程序指定的IE内核低于IE9
{
key.SetDWORDValue(m_strStylesName, 0x0000270f);
}
key.Close();
return TRUE;
}
2、MFC调用JS
CSimpleArray<CComBSTR> paramArray;
paramArray.Add("mfc1");
paramArray.Add("mfc2");
CComVariant r;
m_oCallScript.Run("MFCtoJS", 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);
MessageBox("JS返回值:" + strValue);
}
function MFCtoJS(parm1, parm2){
alert("MFC调用JS,参数1:" + parm1 + "参数2:" + parm2);
return "js return";
}
3、JS调用MFC
function JStoMFC(){
var r = window.external.JStoMFC("js1", "js2");
alert("MFC返回值:" + r);
}
BEGIN_DISPATCH_MAP(CIE_SampleDlg, CDHtmlDialog)
DISP_FUNCTION(CIE_SampleDlg, "JStoMFC", JStoMFC, VT_BSTR, VTS_BSTR VTS_BSTR)//JS调用映射
END_DISPATCH_MAP()
BSTR CIE_SampleDlg::JStoMFC(char* parm1, char* parm2)
{
MessageBox("JS调用MFC,参数1:" + (CString)parm1 + ",参数2:" + (CString)parm2, MB_OK);
CString strResult = "mfc return";
return strResult.AllocSysString();
}
工程源码点此下载