日期:2014-05-18  浏览次数:20681 次

.net 的消息处理问题
大家在运行程序时都是用Application.run(new form1())进入消息循环的吧,所以我一直认为run中有个消息循环,新的FORM1实例提供了消息处理函数。但是突然意识到一个问题,如果在FORM1中让FORM2显示即:form2 frm2 = new form2();frm2.show();本以为frm2无法收到消息,因为它并没有作为RUN的参数,但是FORM2却很好的处理了消息,所以RUN函数并不是用它的参数来决定消息的处理函数的,然后我又试了试这么写:form1 frm1 = new form1();Application.run();程序很好的运行了,而且在FORM1关闭后不退出,更加确信了我的论断。还有个有趣的现象:如果用frm1.showdialog();就不要Application.run();程序也能处理消息,更绝的是如果在form1让form2显示出来,form2也能处理消息,我觉得form::show()方法应该执行了什么特殊的操作,让窗体能够处理消息,请问的是.net到底是怎么处理消息的呢?
谢谢各位。

------解决方案--------------------
这个问题不必深究,否则建立楼主好好看一下MFC的原理。
------解决方案--------------------
简单的说,窗口是有句柄的,句柄是全局注册的,当然能够知道这个窗口是否存在。

------解决方案--------------------
关注
------解决方案--------------------
呵呵,消息为基础,事件为驱动,
看看侯捷的<<深入浅出MFC>>
------解决方案--------------------
封装了哈..不必多谈.