.Net的窗口风格变换的实现

  .net中,窗口显示之后,仍然可以设置它的FormBorderStyle,改变它的风格,而在Windows API中,却无法做到这一点,窗口显示之后就无法改变风格的。事实上,.net中是通过销毁再创建来实现这一点的,当然,这个过程中,需要严格地复制原来的窗口中所保存的数据。

  要证实这一点也很简单,Handle属性可获取窗口的句柄,而句柄在Windows中是唯一的也是不断变化的,前后创建的窗口,虽然在.net中看起来是同一个Form,但Handle的变化不可避免。

  还有一个属性:ShowInTaskbar,虽然它只是控制是否显示在任务栏,但它确实在Windows的实现是需要改变窗口风格的,所以,这个属性的变化也会带来同样的Handle的变化。

  当然,在大多数情况下,这些并不是问题,而正因为大多数情况下不成为问题,使得在它成为问题的时候,很难意识到问题是由这一点引起的。

posted @ 2010-08-08 10:31  芥子-dancingbit  Views(392)  Comments(1)    收藏  举报