在ACTIVEX中使用CHtmlView,在控件销毁时总是出现异常,为什么?

Jedi 2005-02-24 05:41:53
我在VC6中创建了一个ACTIVEX控件,在其中创建了一个CHtmlView并扩充它适应控件大小,创建及调整代码代码如下:
void CTestocxCtrl::OnDraw(
CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
{
// TODO: Replace the following code with your own drawing code.
// pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
// pdc->Ellipse(rcBounds);
if (xmlView)
{
xmlView.MoveWindow (rcBounds);
xmlView.Navigate2("e:\\data.xml",NULL,NULL);
// MessageBox("aaaa");
}
else
{
xmlView.Create(NULL, // 类名
NULL, // 标题
(WS_CHILD | WS_VISIBLE ), // 风格
rcBounds, // 矩形区域
this, // /父窗口
AFX_IDW_PANE_FIRST, // 控制 ID
NULL); ///框架/文档
xmlView.SetVisible (false);
//xmlView.SetScrollInfo()
}
}
在控件销毁时销毁CHTMLVIEW

BOOL CTestocxCtrl::DestroyWindow()
{
xmlView.DestroyWindow();
return COleControl::DestroyWindow();
}

控件运行正常,但在宿主程序退出或者销毁控件时出现异常,请问如何解决?
...全文
205 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
legendhui 2005-02-25
  • 打赏
  • 举报
回复
gx
Jedi 2005-02-25
  • 打赏
  • 举报
回复
问题解决:
通常,CHtmlView是在virtual void PostNcDestroy()中释放空间,但对话框或者控件中的控制常常是作为堆栈对象实现的,所以,在PostNcDestroy()中不必在做什么。
void CShowXMLView::PostNcDestroy()
{

}
同时重载OnDestroy()函数:
void CShowXMLView::OnDestroy()
{
CWnd::OnDestroy();
}
蒋晟 2005-02-25
  • 打赏
  • 举报
回复
为什么不直接用浏览器控件?

ATL Object Wizard中有一个Composite control(复合控件)的对象类型,使用该对象类型可以创建出指定的ActiveX控件。详细介绍和相关示例:

复合控件基础知识
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/vccore/html/vcconaddingfunctionalitytocompositecontrol.asp

复合控件制作示例
http://www.codesky.net/article/list.asp?id=6304

用ATL和MFC来创建ActiveX控件
http://www.microsoft.com/china/msdn/archives/others/visualc/atlmfc.asp

用MFC来创建浏览器控件
http://dev.csdn.net/article/21/21702.shtm

吹泡泡的小猫 2005-02-25
  • 打赏
  • 举报
回复
MFC的视图类在DOC/VIEW框架下工作的很好,在其他情况下会出问题,codeproject上有一篇关于在对话框中使用CView的文章,可能对你有用。
主要是从CView派生一个类,重载其中的几个方法
Jedi 2005-02-25
  • 打赏
  • 举报
回复
高手来啊

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧