class CWebBrowser : public CWnd, IOleCommandTarget我的 class CWebBrowser 继承了 IOleCommandTarget
并且重载了  virtual HRESULT STDMETHODCALLTYPE Exec( 
            /* [unique][in] */ const GUID __RPC_FAR *pguidCmdGroup,
            /* [in] */ DWORD nCmdID,
            /* [in] */ DWORD nCmdexecopt,
            /* [unique][in] */ VARIANT __RPC_FAR *pvaIn,
            /* [unique][out][in] */ VARIANT __RPC_FAR *pvaOut)但当网页有脚本错误时, 我设了断点,它并不会跳到 Exec() 里面去.是不是我的实现有问题?

解决方案 »

  1.   

    class CWebBrowser : public CWnd
    {
    BEGIN_INTERFACE_PART(OleCommandTarget, IOleCommandTarget)
    INIT_INTERFACE_PART(CDocObjectServer, OleCommandTarget)
    STDMETHOD(QueryStatus)(const GUID*, ULONG, OLECMD[], OLECMDTEXT*);
    STDMETHOD(Exec)(const GUID*, DWORD, DWORD, VARIANTARG*, VARIANTARG*);
    END_INTERFACE_PART(OleCommandTarget)
    ......
    }ULONG FAR EXPORT CWebBrowser::XOleCommandTarget::AddRef()
    {
    METHOD_PROLOGUE_(CWebBrowser, OleCommandTarget)
    return pThis->ExternalAddRef();
    }
    ULONG FAR EXPORT CWebBrowser::XOleCommandTarget::Release()
    {
        METHOD_PROLOGUE_(CWebBrowser, OleCommandTarget)
    return pThis->ExternalRelease();
    }HRESULT FAR EXPORT CWebBrowser::XOleCommandTarget::QueryInterface(REFIID riid, void **ppvObj)
    {
    METHOD_PROLOGUE_(CWebBrowser, OleCommandTarget)
        HRESULT hr = (HRESULT)pThis->ExternalQueryInterface(&riid, ppvObj);
    return hr;
    }STDMETHODIMP CWebBrowser::XOleCommandTarget::Exec(
                /* [unique][in] */ const GUID __RPC_FAR *pguidCmdGroup,
                /* [in] */ DWORD nCmdID,
                /* [in] */ DWORD nCmdexecopt,
                /* [unique][in] */ VARIANT __RPC_FAR *pvaIn,
                /* [unique][out][in] */ VARIANT __RPC_FAR *pvaOut
       )
    {
    .....
    }我改成了上面的代码, 但仍然跳不到 exec() 里面去......照样还是显示脚本错误的提示框...
      

  2.   

    你想实现调用browser的菜单功能吗? 比如复制,粘贴.?IHTMLDocument2 接口的 execCommand
      

  3.   

    我是想屏蔽脚本错误的提示框,包括网页自身显示的提示框,看过MSDN上面的帮助,还是不知道如何实现那个接口。