在MDI中一个启动,关闭子窗口的问题

lovemy 2006-01-16 05:39:20
重复启动关闭子FRAME几次就会出异常,到底什么问题呢
在CMainFrame中:
if(m_pInput!=NULL)
{
m_pInput->MDIActivate();
return;
}

m_pInput=new CChildFrame();
CCreateContext context;
context.m_pNewViewClass=RUNTIME_CLASS(CProductView);
if(!m_pInput->LoadFrame(IDI_ICON1,WS_MAXIMIZE|WS_OVERLAPPEDWINDOW,this,&context))
return;
m_pInput->ShowWindow(SW_MAXIMIZE);
m_pInput->InitialUpdateFrame(NULL,true);

启动一个子FRAME。重复启动关闭就出异常。。不知道哪出错了啊。。。奇怪

...全文
172 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovemy 2006-01-17
  • 打赏
  • 举报
回复
哦。。原因是在我自己的数据库类里构造函数没有调用 ::CoInitialize(NULL);,
而析构函数却调用了 ::CoUnInitialize(NULL); 这两个函数有什么用呢
lovemy 2006-01-17
  • 打赏
  • 举报
回复
终于找到原因了:
_variant_t var2 = rs->GetCollect(_variant_t(array.GetAt(nCol)));
if(var2.vt!=VT_NULL)
var = (LPCSTR)_bstr_t(var2);
else
var="";
m_pList->SetItemText(nIndex,nCol,var);
这一些地方应该没有问题吧,但是问题就是出到这里。。。不需要最后删除_variant_t吧。。。呵呵。
lovemy 2006-01-17
  • 打赏
  • 举报
回复
一报异常后就自动停到
inline _variant_t::_variant_t(IDispatch* pSrc, bool fAddRef) throw()
{
V_VT(this) = VT_DISPATCH;
V_DISPATCH(this) = pSrc;

// Need the AddRef() as VariantClear() calls Release(), unless fAddRef
// false indicates we're taking ownership
//
if (fAddRef) {
V_DISPATCH(this)->AddRef(); 《--------这一行。不知道为什么
}
}

下面调试窗口里fAddRef的value是1

callstack里指到的是_variant_t::_variant_t(....)
TianChong 2006-01-17
  • 打赏
  • 举报
回复
跟踪一下看看,不过系统找出的出问题的地方未必就是真的出错的地方,问题也可能出在其它地方,导致此处出错。
pomelowu 2006-01-16
  • 打赏
  • 举报
回复
嗯,看来的确不是你上面贴出来的代码出错。

debug停下来的时候看看callstack(在debug工具条上有这个按钮),看看出错的代码是你写的哪个函数的地方。
lovemy 2006-01-16
  • 打赏
  • 举报
回复
不。。停在_variant_t里的AddRef
pomelowu 2006-01-16
  • 打赏
  • 举报
回复
debug停在这里么?

16,551

社区成员

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

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

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