hardworker (2005年4月21日16:53 留言
你好,我把myie相关的文章找了很多,但是好像有很多兄弟都遇到了和我一样的问题:
1、我把myie编译成release版本,就可以运行,当然我不考虑其中是否有bug.
2、我把myie编译成debug版本,就不能运行。我调试进去,从InitFavorites()->BuildFavoritesMenu()->
int bandid = m_wndReBar.GetReBarCtrl().IDToIndex(ID_VIEW_LINKS);
到这里就出错了。
后来我发现m_wndReBar.Create()在后面才调用了?但是不知道什么问题。
3、我使用的myie下载地址是http://cosoft.org.cn/project/showfiles.php?group_id=4604&release_id=4639
其中把myie的3个版本都用了,都会产生问题。
其中myie31产生的是我上面的问题,其他的问题我也就没有再仔细看。
4、如果以上还有我描述不清楚的地方,请联系:qq:25165957,zhangxiangang@sxit.com.cn
5、如果您有调试版的myie并且能够通过,请您指点一下。
6、我找到的相关这个问题的资料:
http://cosoft.org.cn/forum/forum.php?thread_id=274&forum_id=4749
7、这是我在csdn上对问题的描述。
http://community.csdn.net/Expert/topic/3952/3952966.xml?temp=.6243097
8、我怀疑这是myie的原作者写程序时固有的问题。敬请您的答复。
我试验了一下,的确如此,稍微单步跟踪了一下,执行到oncreate里面的 InitFavorites的
m_nFavSize = BuildFavoritesMenu(szPath,0 , pMenu, nStart, TRUE, nFavs, nMostFavs); BuildFavoritesMenu的 if(FirstLevel) 里面的
int bandid = m_wndReBar.GetReBarCtrl().IDToIndex(ID_VIEW_LINKS); 就会出现异常 afxcmn2.inl 177行
_AFXCMN_INLINE int CReBarCtrl::IDToIndex(UINT uBandID) const
 &leftsign; ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, RB_IDTOINDEX, uBandID, 0L); &rightsign;
我稍微看了一下代码,这个mainfrm.cpp文件就有14600行代码。
我不知道hardworker是要做到什么程度,itreesurf的作者好像就是因为该源代码太过复杂,所以没有兴趣后续开发下去的。
如果只是做做二次开发,一些功能改进,不妨考虑一下另类的解决方法,我试验了一下,还是可以单步调试的
1.环境:我使用的开发环境是vc7.1,其release单步调试需要对项目属性作如下修改:
“C++”--》“常规”--》“调试信息格式”  改为:“用于“编辑并继续”的程序数据库(/ZI)”
“C++”--》“优化”--》“优化”          改为:禁用(/Od)
如果你是vc6环境,可如下修改release版属性:
选中Win32 Release然后
Project-》setting-》C/C++ -》Category-》General
-》Optimization-》Disable(Debug)
-》Debug Info-》Program DataBase
-》Link---》Generate Debug Info打上钩

历史博文

标签:,
四月 23, 2005 at 10:40 下午 by yippee 1,014 次
Category: Dev
Tags: ,