xtaens 发表于 2018-6-29 15:27:39

VC6写的窗口调用IP address控件,关闭窗口后软件为何异常退出

本帖最后由 xtaens 于 2018-6-29 15:39 编辑

使用VC++ 6.0软件写了一个小软件,主窗口中通过2个按钮调用另外2个窗口。命令1和2窗口中都使用了IP Address控件,并给控件添加了相应的变量m_ipx。目前的现象是:
1、给IP Address控件添加m_ip1变量;打开命令1窗口,什么也不做,点击关闭或退出按钮,整个软件在xp系统下就退出了(正常应该到主界面),无异常提醒;在win7和win10下提示软件关闭异常。
2、给IP Address控件 不 添加m_ip1变量;打开命令1窗口,什么也不做,点击关闭或退出按钮,软件在各个系统下均工作正常。
3、打开命令2窗口,什么也不做,点击关闭或退出按钮,到了主界面,一切正常。【这个窗口中是定义了m_ipxx变量的,但是却没有问题】

为什么在窗口1中只要定义ip地址控件变量软件就异常退出呢?不管用不用这个变量,只要定义就出问题。

win7或者win10下提示的错误界面。xp下直接闪退了,并没有提示什么错误






这个是工程源码,vc 6.0编译:


编辑原因:加入了图片

xtaens 发表于 2018-6-29 17:39:24

顶一顶,,期待高手帮忙解决一下。。。

McuPlayer 发表于 2018-6-29 15:27:40

代码混乱导致的,跟IP地址控件没有一毛钱的关系

你的本意是使用Set1.h和Set1.cpp做为CSet类的定义和实现
然而,InstructionMakerDlg.cpp使用这个类之前include的却是Set.h,看第8行

类和结构,成员变量的分配方式类似,编译器使用偏移量的方法定位地址。
然后,CSet类里面的构造函数对成员变量的操作,超出了编译器分配给类的内存边界


解决方法:把Set_new   Set1这些的h和cpp文件都干掉,然后根据编译器的提示,很快就改好了

nanfang2000 发表于 2018-6-29 19:24:59

居然还在用6.0

guxingganyue 发表于 2018-6-29 22:31:54

nanfang2000 发表于 2018-6-29 19:24
居然还在用6.0

vc6.0软件小,编译快,还是不错的

xtaens 发表于 2018-6-29 22:35:04

McuPlayer 发表于 2018-6-29 18:39
代码混乱导致的,跟IP地址控件没有一毛钱的关系

你的本意是使用Set1.h和Set1.cpp做为CSet类的定义和实现


谢谢回复

我把InstructionMakerDlg.cppinclude的Set.h改为Set1.h就好了。。。Set.h是个无用的文件,忘记删除了。。

再次感谢
页: [1]
查看完整版本: VC6写的窗口调用IP address控件,关闭窗口后软件为何异常退出