你好,我把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 at sxit dot 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 { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, RB_IDTOINDEX, uBandID, 0L); } 我稍微看了一下代码,这个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打上钩 字体:大 中 小 |
![]() | 永久地址 http://www.shengfang.org/blog/p/2005042302.php |
![]() | 引用地址 http://www.shengfang.org/blog/tb.php?tb_id=1114267227 |
2005年4月23日22:40星期六 [Dev开发]





