VC2008 sp1 CDockablePane的一个bug,兼散分

psbeond 2011-04-18 06:15:46
今天在制作LibUIDK帮助文档的时候,为了截屏方便,把Property设置窗口(一个dock panel),拖到主窗口外面成一个独立窗口。然后关闭主窗口,直接Crash了。Debug了一下,原来Property窗口在主窗口OnDestroy执行时,已经Destroy了,而在主窗口OnDestroy中,又调用了Property,所以Crash。

用VS2008 sp1新建一个Visual Studio风格的窗口,什么也不用改,把任何一个Dock panel拖到主窗口外,然后关闭主窗口,都有这个问题。
...全文
161 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
jdzfjfhnui 2011-05-09
  • 打赏
  • 举报
回复
我试了一下,很正常的关闭了,没有crash。VS2008SP1,新建一个SDI工程,未做任何改动,将后边的Property窗口拖出来,然后关闭主窗口,没有crash现象。
smwhotjay 2011-05-09
  • 打赏
  • 举报
回复
vs2003依然使用中...
ronghaoyue 2011-05-09
  • 打赏
  • 举报
回复
自己试了一下,也没这个问题,换个环境试一下。
psbeond 2011-05-09
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 jdzfjfhnui 的回复:]
我试了一下,很正常的关闭了,没有crash。VS2008SP1,新建一个SDI工程,未做任何改动,将后边的Property窗口拖出来,然后关闭主窗口,没有crash现象。
[/Quote]

难度是我的配置不对?
「已注销」 2011-05-08
  • 打赏
  • 举报
回复
我在昨天把SP1给卸了。哎。
老邓 2011-05-08
  • 打赏
  • 举报
回复
接分!
还是WTL的代码看着舒服!!
jameshooo 2011-05-08
  • 打赏
  • 举报
回复
接分

我以前也发现过BCG的一个BUG,居然把 if ( xxx == NULL ) 写成了 if ( xxx = NULL ),造成了资源泄漏。
Eleven 2011-05-08
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 psbeond 的回复:]
引用 8 楼 visualeleven 的回复:
我试了一下,很正常的关闭了,没有crash。VS2008SP1,新建一个SDI工程,未做任何改动,将后边的Property窗口拖出来,然后关闭主窗口,没有crash现象。


这是为什么呢?
[/Quote]
说一下,我的平台是Win7 x64
psbeond 2011-05-08
  • 打赏
  • 举报
回复
顶起来。把分散了。然后结贴。
psbeond 2011-04-28
  • 打赏
  • 举报
回复
为什么没人接分呢?
psbeond 2011-04-19
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 visualeleven 的回复:]
我试了一下,很正常的关闭了,没有crash。VS2008SP1,新建一个SDI工程,未做任何改动,将后边的Property窗口拖出来,然后关闭主窗口,没有crash现象。
[/Quote]

这是为什么呢?
疯狂-的-蜗牛 2011-04-18
  • 打赏
  • 举报
回复
楼主牛X,接分
Eleven 2011-04-18
  • 打赏
  • 举报
回复
我试了一下,很正常的关闭了,没有crash。VS2008SP1,新建一个SDI工程,未做任何改动,将后边的Property窗口拖出来,然后关闭主窗口,没有crash现象。
zq0910 2011-04-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 psbeond 的回复:]
解决办法,重写CMainFrmae::DestroyWindow虚函数,在这个虚函数中调用
HICON hFileViewIcon = m_wndFileView.GetIcon(FALSE);
DestroyIcon(hFileViewIcon);
HICON hPropertiesBarIcon = m_wndProperties.GetIcon(FALSE);
DestroyIcon……
[/Quote]


正确
走走刀口 2011-04-18
  • 打赏
  • 举报
回复
我还没用过VS2008.
Eleven 2011-04-18
  • 打赏
  • 举报
回复
haogeai123 2011-04-18
  • 打赏
  • 举报
回复
psbeond 2011-04-18
  • 打赏
  • 举报
回复
解决办法,重写CMainFrmae::DestroyWindow虚函数,在这个虚函数中调用
HICON hFileViewIcon = m_wndFileView.GetIcon(FALSE);
DestroyIcon(hFileViewIcon);
HICON hPropertiesBarIcon = m_wndProperties.GetIcon(FALSE);
DestroyIcon(hPropertiesBarIcon);
以上代码删除Icon。因为这时,wndFileView和wndProperties还是有效的。
Dreadnought 2011-04-18
  • 打赏
  • 举报
回复

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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