建设网站费用入什么科目,如何查询一个网站的空间大小,做pc网站如何实时预览,网站推广手段有哪些From: http://blog.csdn.net/catxl313/article/details/2204541 CDHtmlDialog可以方便的将网页嵌入对话框#xff0c;使得在程序设计中人机界面#xff08;DHTML网页#xff09;与控制逻辑#xff08;CDialog#xff09;可以很好的分离#xff0c;下面是一些实用技术与技…From: http://blog.csdn.net/catxl313/article/details/2204541 CDHtmlDialog可以方便的将网页嵌入对话框使得在程序设计中人机界面DHTML网页与控制逻辑CDialog可以很好的分离下面是一些实用技术与技巧。 1.将数据验证任务完全交给JavaScriptDialog只做有意义的事。 input typebutton idbutton1 onclickif(validate()); window.event.cancelBubbletrue; / 这样事件由IE处理之后就不会将该事件传给其他事件句柄处理了因为IE先于CDHtmlDialog处理该事件。 2.从CDHtmlDialog调用网页中JavaScript函数的方法。 其中pDoc指针参数可通过CDHtmlDialog::GetDHtmlDocument(pDoc)函数获得 strFunctionName指示函数名 dispParams为传给函数的参数列表其使用方法请查阅MSDN相关文档 varResult为函数返回值 exceptInfo为JavaScript函数执行时抛出的异常 nArgErr返回第一个出错的参数的下标由于参数列表中参数的逻辑顺序为JavaScript函数定义的参数的顺序的逆序所以应特别注意该返回值所指示的具体位置。 HRESULT CallJSFunction(IHTMLDocument2* pDoc2, CString strFunctionName, DISPPARAMS dispParams, VARIANT* varResult, EXCEPINFO* exceptInfo, UINT* nArgErr ) { IDispatch *pDispScript NULL; HRESULT hResult; hResult pDoc2-get_Script(pDispScript); if(FAILED(hResult)) { return S_FALSE; } DISPID dispid; CComBSTR objbstrValue strFunctionName; BSTR bstrValue objbstrValue.Copy(); OLECHAR *pszFunct bstrValue ; hResult pDispScript-GetIDsOfNames(IID_NULL, pszFunct, 1, LOCALE_SYSTEM_DEFAULT, dispid); if (S_OK ! hResult) { pDispScript-Release(); return hResult; } varResult-vt VT_VARIANT; hResult pDispScript-Invoke(dispid, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, dispParams, varResult, exceptInfo, nArgErr); pDispScript-Release(); return hResult; } 3.CDHtmlDialog中JavaScript通过external调用C方法。 1让CDHtmlDialog对象自身支持自动化 EnableAutomation(); //只要是从CCmdTarget派生下来的类都可以支持 //可以放在CMyDHTMLDialog::CMyDHTMLDialog()中调用 2将自身暴露给Script引擎 SetExternalDispatch(GetIDispatch(TRUE)); //将浏览器控件的扩展接口设置为对话框自身的IDispatch //放在CMyDHTMLDialog::OnInitDialog中调用 3声明DISPATCH_MAPMyDHTMLDialog.h DECLARE_DISPATCH_MAP() 4定义DISPATCH映射MyDHTMLDialog.cpp BEGIN_DISPATCH_MAP(CMyDHtmlDialog, CDHtmlDialog) DISP_FUNCTION(CMyDHTMLDialog, Func1, Func1, VT_EMPTY, VTS_NONE) // example: // DISP_FUNCTION(CMyDHTMLDialog,Func2,TestFunc,VT_BOOL,VTS_BSTR VTS_I4 VTS_I4) // ^return, ^parameters type list //每个方法都需要在这里添加映射 END_DISPATCH_MAP() 5函数实现 void CMyDHTMLDialog::Func1() { AfxMessageBox(_T(Func1 called!)); } 6调用示例 INPUT idButton1 typebutton valueButton1 nameButton1 onclickexternal.Func1();