窗口句柄保证有效,并且只要窗口存在就不会重复使用.它本质上是索引,全局有效,并且通常表现得像一个全局ID,而不像内核句柄(它们只在一个进程和指针中有效).窗口关闭后,窗口句柄可能会被重用,现在指向另一个窗口.
但是,不明显的是,如果Form底层窗口的生命周期window是相同的.我依稀记得在Delphi的VCL(这是Windows.Forms的精神前身)中,某些属性更改在后台重新创建了窗口.
Control.RecreatingHandle属性的存在似乎是一个强烈的迹象,表明底层窗口的生命周期确实可以比.net控件的生命周期短.这可能导致Form在其生命周期中处理变化.
Control.RecreateHandle
只要新控件需要参数,就会调用RecreateHandle方法,但使用从UpdateStyles到CreateParams的调用是不够的.此方法还调用DestroyHandle和CreateHandle,并将RecreatingHandle设置为true.
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.recreatehandle.aspx
从这个方法的描述中我得出结论,窗口句柄确实可以在表单的生命周期中改变.
| 归档时间: |
|
| 查看次数: |
3675 次 |
| 最近记录: |