• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > CHTMLView设置了IDocUIHandler又重新Navigate2时出错。

CHTMLView设置了IDocUIHandler又重新Navigate2时出错。

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了chtmlview,mfc chtmlview,chtmlview类,连接到icloud时出错,连接icloud时出错等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: CHTMLView 设置了IDocUIHandler 又重新Navigate2时出错。
描述:

我使用MFC的文档视图模型,设置了SetUIHandler了,此时使用external什么的都正常。
但是,当点击了连接后,就出现内存不能读的情况。
什么原因呢?
在NavigateComplete2()

	IDispatch* pDoc = GetHtmlDocument();
if (pDoc == NULL) {
return;
}
ICustomDoc* pDoc2=NULL;
HRESULT hresult = pDoc->QueryInterface(IID_ICustomDoc, (void**)&pDoc2);
if (FAILED(hresult)) {
pDoc->Release();
return;
}
pDoc->Release(); 
m_DocHostUIHandler=new CDocHostUIHandler();//this->GetDocument()
if(!this->GetDocument()->m_isConfig)
pDoc2->SetUIHandler(m_DocHostUIHandler);
pDoc2->Release();

那个CDocHostUIHandler 的代码是
实现的一个IDocHostUIHandler接口的类

////DocHostUIHandler.h 
//   DocHostUIHandler.h:   interface   for   the   CDocHostUIHandler   class. 
//Look   into   microsoft   document   for   IDocHostUIHandler   function 
////////////////////////////////////////////////////////////////////// 
#if   !defined(AFX_DOCHOSTUIHANDLER_H__04A74BFE_93DE_4460_B0B9_E64E17BAD651__INCLUDED_) 
#define   AFX_DOCHOSTUIHANDLER_H__04A74BFE_93DE_4460_B0B9_E64E17BAD651__INCLUDED_ 
#if   _MSC_VER   >   1000 
#pragma   once 
#endif   //   _MSC_VER   >   1000 
#include   "stdafx.h " 
#include "mshtmhst.h"
//#include "YWClientDoc.h"
class   CDocHostUIHandler   :   public   IDocHostUIHandler       
{ 
public: 
// DWORD   m_dwPointer; 
// void   SetPointer(DWORD   dwPointer); 
CDocHostUIHandler();
// CDocHostUIHandler(CYWClientDoc * myExternal);
virtual   ~CDocHostUIHandler();
virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID   riid, 
                void   **ppvObject );
///////////the   fucntions   from   IUnknown 
/*
virtual   HRESULT   STDMETHODCALLTYPE   QueryInterface( 
                REFIID   riid, 
                void   **ppvObject   ) 
{ 
if (   riid   ==   IID_IDocHostUIHandler) 
{ 
*ppvObject   =   (   IDocHostUIHandler   *   )this; 
} 
if(*ppvObject) 
{ 
IUnknown   *pUnknown; 
pUnknown   =   (IUnknown   *)(*ppvObject); 
pUnknown-> AddRef(); 
} 
return   S_OK; 
} 
*/
virtual   ULONG   STDMETHODCALLTYPE   AddRef() 
{ 
        return(   InterlockedIncrement(   &m_cRef   )   ); 
} 
virtual   ULONG   STDMETHODCALLTYPE   Release() 
{ 
ULONG   uRet   =   InterlockedDecrement(   &m_cRef   ); 
if(0==uRet) 
{ 
delete   this; 
} 
return(uRet); 
} 
////////the   virtual   function   from   IDocHostUIHandler   //////////////// 
virtual   HRESULT   STDMETHODCALLTYPE   ShowContextMenu(   
                /*   [in]   */   DWORD   dwID, 
                /*   [in]   */   POINT   __RPC_FAR   *ppt, 
                /*   [in]   */   IUnknown   __RPC_FAR   *pcmdtReserved, 
                /*   [in]   */   IDispatch   __RPC_FAR   *pdispReserved) 
{ 
return E_NOTIMPL; //  S_OK;  屏蔽右键
} 
      
virtual   HRESULT   STDMETHODCALLTYPE   GetHostInfo(   
                /*   [out][in]   */   DOCHOSTUIINFO   __RPC_FAR   *pInfo) 
{ 
if(pInfo != NULL)
{
pInfo->dwFlags  |= DOCHOSTUIFLAG_NO3DBORDER; 
}
else
{
DOCHOSTUIINFO my;
my.dwFlags=DOCHOSTUIFLAG_NO3DBORDER;
pInfo = & my;
}
return S_OK;
return E_NOTIMPL; 
}
        
virtual   HRESULT   STDMETHODCALLTYPE   ShowUI(   
                /*   [in]   */   DWORD   dwID, 
                /*   [in]   */   IOleInPlaceActiveObject   __RPC_FAR   *pActiveObject, 
                /*   [in]   */   IOleCommandTarget   __RPC_FAR   *pCommandTarget, 
                /*   [in]   */   IOleInPlaceFrame   __RPC_FAR   *pFrame, 
                /*   [in]  &
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 请教CHtmlView派生控件的内存释放问题
  • CHtmlView中如何过滤部分HTML代码
  • VC中使用CHtmlView和IE的冲突问题
  • 哪位大哥给说明下CHtmlView::OnDocumentComplete()这个函数会在什么时候被触发执行?在线等着给分!
  • CHtmlView,如何解决IE的提示框问题?
  • 请教CHtmlView键盘输入的问题
  • chtmlview导航后提示未登录
  • CHtmlView枚举指定的超链接
  • 关于DLL中使用CHtmlView
  • chtmlview可以判断网站是否需要认证吗?

相关文章

  • 2017-06-04 请问如何让webbrowser中的flash响应回车键
  • 2017-06-04 ATL写的IE工具栏,怎样才能安装后就默认显示?
  • 2017-06-04 请问如何取得IE控件发出HTTP请求后,服务器返回的回应消息的HTTP头??
  • 2017-06-05 COM组件分为几种线程模型似乎没有什么意义啊,对于调用端有什么不同么?
  • 2017-06-05 超高分求解类似WPE拦截数据包的c代码
  • 2017-06-04 能不能将一个ie的dll插件转换成activeX组件做到自动下载并注册
  • 2017-06-04 COM运行中怎么获得当前生成DLL的绝对路径?用什么函数?
  • 2017-06-05 请问别人给我提供的FileDLL和Fileh我如何调用这些文件里的函数呢,小弟是第一次玩DLL
  • 2017-06-05 工作者线程内能不能调用domodal生成模式对话框?
  • 2017-06-05 在dll的DLL_THREAD_ATTACH从不同方式获得当前线程HANDLE不一样

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • SOS!关于线程退出码的问题
    • 这样为什么不能获得进程的用户名??
    • 如何将ATL接口中的整数数组传送给Web中的VBScript,请高手指导
    • 请问VB写的ActiveX组件在VC中怎么调用?
    • 急啊!!怎么在dsoframer控件中增加方法?
    • 线程创建的CDialog无法显示?
    • 急动态链接库显示调用怎样使用为什么getprocadress函数返回0x0000000呢
    • 如何用GDI+的DrawImage早对话框的指定位置显示图像
    • 使用directshow编写视频采集时的问题
    • 是否可以在脚本中实现自定义ActiveX控件的消息接收???

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有