设为首页 - 加入收藏 - 网站地图 - RSS订阅 村姑网-www.cunguer.com
当前位置:首页 > 软件开发 > 易语言 > 正文

易语言修改窗口类名为#32770后,点击窗口右上角的关闭按钮无法关闭的解决方法

时间:2019-01-30 17:53:00 来源:村姑网 作者:喜欢安静 阅读:0
导读:由于某些原因,在编写一个易语言程序的时候,需要把易语言默认的窗口类名(ClassName)修改为“#32770”,修改后发现窗口类名确实变了,F5调试运行的时候没有发现任何问题,但是在静态编译后,打开编译后的exe文件,点击窗口右上角的叉叉关闭按钮的时候,发现窗口竟然...

由于某些原因,在编写一个易语言程序的时候,需要把易语言默认的窗口类名(ClassName)修改为“#32770”,修改后发现窗口类名确实变了,F5调试运行的时候没有发现任何问题,但是在静态编译后,打开编译后的exe文件,点击窗口右上角的叉叉关闭按钮的时候,发现窗口竟然无法关闭。why?原因后面会说,我先说下解决方法吧~!

该问题我总结了一下,有3种方法可以让窗口正常的关闭:
1、在易语言窗口上放置一个按钮,编写该按钮被单击的事件为:窗口1.销毁 (),在需要关闭窗口的时候,点击这个按钮就可以正常的关闭了。
2、在易语言窗口事件中找到:【可否被关闭】或者【窗口可否被关闭】这2个事件中的任意一个,在其中加入代码:窗口1.销毁 (),此时,当我们点击窗口右上角的叉叉按钮关闭窗口的时候,窗口就可以正常的关闭了。
3、不要设置窗口类名为“#32770”,把类名留空,用易语言默认的窗口类名或者自己设置其他的类名即可。

那么,究竟是什么原因呢?下面我分享下我解决【易语言窗口修改类名后不能关闭窗口】这个问题的步骤:

1、易语言修改窗口类名如下图:
易语言窗口类名设置

2、修改类名后,编译后,发现窗口不能被关闭。于是,我在易语言窗口事件【将被销毁】的事件中加入了一个信息框 :信息框 (“_窗口1_将被销毁”, 0, “_窗口1_将被销毁”, ),静态编译后,打开编译好的exe程序,点击窗口右上角的叉叉按钮关闭窗口,发现窗口无法关闭,且信息框没有弹出来,这说明,这个易语言程序窗口的【将被销毁】根本就没有收到关闭窗口的消息。

3、经过步骤2,我首先考虑是不是其他的窗口事件影响到了窗口接收关闭窗口的消息呢?于是我把几乎所有的窗口事件代码都屏蔽掉,然后再次静态编译,运行后发现,还是无法进入到销毁窗口的事件中。

4、难道是windows 10系统的原因?于是我打开windows7的虚拟机,把静态编译后的exe程序复制到虚拟机中,发现问题依旧,这说明不是系统的原因。

5、既然这个易语言窗口程序关闭不了不是操作系统的原因,那么就是易语言本身的参数配置的原因了。我仔细对比了一下该易语言程序和我之前写的程序有哪些区别,发现除了修改了易语言程序窗口默认的窗口类名外,其他的没有区别,那么问题是不是出在这个类名上了呢?

6、于是,我把窗口类名【#32770】删掉,使用易语言默认的窗口类名,静态编译后,运行exe,窗口可以被正常的关闭,窗口事件【将被销毁】的事件也正常的执行了。

7、难道易语言修改窗口类名这个设置是逗我们玩的吗?于是我随便设置了一个窗口类名,继续测试,发现是可以正常关闭的,那么问题可能就出在【#32770】这个类名了。

8、于是百度了一下关于【#32770】这个类名,发现【#32770】这个类名是对话类窗口的类名,对话框销毁的时候调用的是【EndDialog】事件,这也就解释了为什么窗口事件【将被销毁】事件中的信息库没有弹出来的原因了。

OK,至此,关于易语言把窗口类名设置为【#32770】时,静态编译后,无法关闭窗口的问题解决方法和原因已经搞清楚了。感谢大家看完本文章,感谢您支持【村姑网】,如果觉得本文好的话,记得分享的时候留下我们的网址哈,谢谢大家~!

 

《易语言修改窗口类名为#32770后,点击窗口右上角的关闭按钮无法关闭的解决方法》地址:http://www.cunguer.com/article/347.html,本文来自村姑网,您身边的IT专家 www.cunguer.com,转载请注明出处,您的支持是我们创作的源泉~!