(怪异问题,非高手勿进)使用自定义框架创建子窗口时的怪异问题!

shixinwenwu 2006-10-12 10:16:56

在一个单文档程序里,
定义了一个框架类,class CSpFrameWnd : public CFrameWnd
并在在CSpFrameWnd 中用SplitterWnd 拆分了三个窗口,分别对应三个自定义View类来显示。

在app中如下方式创建了一个窗口,也就是用上面的框架创建窗口。
CCreateContext pContext;
pContext.m_pNewViewClass=RUNTIME_CLASS(CSp3View);
pContext.m_pCurrentDoc=new CMulFrameDoc();
m_pMainFrame=new CSpFrameWnd();
if(!m_pMainFrame->Create(AfxRegisterWndClass(0),"活动视图",(WS_OVERLAPPEDWINDOW |WS_VISIBLE|FWS_ADDTOTITLE) ,CRect(0,0,400,400),NULL,MAKEINTRESOURCE(IDR_ADDMENU),0,&pContext))
return FALSE;

????????问题是:
以上都已经成功运行,新建窗口也能够显示出来,并能在三个子窗口分别显示出在 创建时画好的图形。

但是,当把该窗口拖拽放大时,就会显示出现错误
“MulFrame.exe 中的 0x7c2399ba (mfc71d.dll) 处未处理的异常: 0xC0000005: 读取位置 0x00000020 时发生访问冲突 ”
用debug 定位中断,到了winocc.cpp 中的下面函数的第二行,就运行不下去了,

void CWnd::SetWindowText(LPCTSTR lpszString)
{
ASSERT(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));

if (m_pCtrlSite == NULL)
::SetWindowText(m_hWnd, lpszString);
else
m_pCtrlSite->SetWindowText(lpszString);
}

如果,拖拽放大时不施放鼠标,不刷新窗口,就不会出错。
因为窗口大小是:CRect(0,0,400,400),在这个范围内拖拽缩小窗口视图也不会出错?

请大伙给看看吧,我弄了很久,要疯掉啦!一定给高分!

...全文
195 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
东文-桑晨 2006-10-13
  • 打赏
  • 举报
回复
自己解决就好~GX
Kudeet 2006-10-13
  • 打赏
  • 举报
回复
gx,jf
shixinwenwu 2006-10-13
  • 打赏
  • 举报
回复
问题已自己解决!结贴!
shixinwenwu 2006-10-12
  • 打赏
  • 举报
回复
找到问题了,我在那 拆分的三个视类里面有OnMouseMove()负责显示鼠标的坐标值,显示的位置在框架的状态栏里,而我的这个框架没有状态栏,所以出错了,
但是新问题又来了;正如我前面说的:
“因为窗口大小是:CRect(0,0,400,400),在这个范围内拖拽缩小窗口视图也不会出错?”
就是说OnMouseMove在这个区域里面没有响应,而且拆分条是可以看见的,但是不能拖拽拆分条,当窗口大于CRect(0,0,400,400),这个区域时的拆分条那部分才能选中拖拽,
一定是什么东西挡在了CRect(0,0,400,400),这个区域里了

请帮帮我吧,上面的问题算是完了,回答了这个问题还是一样给分!!!!多谢了!!!
shixinwenwu 2006-10-12
  • 打赏
  • 举报
回复


应该 不是这里的错,一定时是顶层的代码的问题
DentistryDoctor 2006-10-12
  • 打赏
  • 举报
回复
ASSERT(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));

满足这个断言的条件吗?

16,472

社区成员

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

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

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