用得DirectUI做界面,
打开网页 CActiveXUI* pActiveXUI1 = static_cast<CActiveXUI*>(m_pm.FindControl(_T("ie")));
if( pActiveXUI1 ) {
IWebBrowser2* pWebBrowser1 = NULL;
pActiveXUI1->GetControl(IID_IWebBrowser2, (void**)&pWebBrowser1);
if( pWebBrowser1 != NULL ) {
pWebBrowser1->Navigate(L"test.htm",NULL,NULL,NULL,NULL);  
//pWebBrowser->Navigate(L"about:blank",NULL,NULL,NULL,NULL); 
pWebBrowser1->Release();
}
}test.htm中<input id="button" type="button" value="点击调用客户端的CppCall函数" onclick="return window.external.CppCall()" />
网上的代码都看的差不多了,也不是很懂。
问题:怎么实现htm中调用CppCall函数?

解决方案 »

  1.   

    html文件:
    <HTML>
    <HEAD>
    <TITLE>New Page</TITLE>
    <script language="javascript">
        function doTest()
        {
            FuckATL1. CppCall();
        }
    </script>
    </HEAD>
    <BODY>
    <OBJECT ID="FuckATL1" CLASSID="CLSID:19CE2D6B-DE5E-4343-9F9B-
    D37053304AC2
    ">
    </OBJECT>
    <input type="button" value="测试加法" id="btnOK" onclick="doTest
    ();"></input>
    </BODY>
    </HTML>
      

  2.   

    参考mfc的做法。mfc向导支持生成html界面的对话框。
    里面有点html上的按钮,然后调用C++的函数的功能。
      

  3.   

    可以自己在设置元素的OnClick事件。HRESULT IHTMLElement::get_onclick(VARIANT *p);
    HRESULT IHTMLElement::put_onclick(VARIANT v);
      

  4.   

    现在大约知道是错误出在哪里,是指针问题搞不定。
    我参考的代码是直接在mainform显示网页,
    CWebBrowserBase *pBrowser;
    而我是想在某个子页面里显示这个网页,怎么把指针指到子页面呢?
    或者高手请留联系方式。
      

  5.   

    应该通过HTML页面来传递JS,子页面JS传递到主HTML页面JS,然后再有主页面调用C++
      

  6.   

    js 调用c++函数撒,我做过的,完美实现,嘻嘻