补充 :
ewin2000下的移动没有虚线框 
eXpPro下的有移动虚线框 估计eXPHome 也应该有
条件:无标题窗体
    :自定义界面 需要支持移动event 
上述的问题 在移动时候可能不是很明显 但是一旦变成了resize的时候 就很能说明问题如果中文版win2000 xp的朋友 麻烦试验一下 有无虚线框 
这个对于程序的跨平台支持很有用的 谢谢了

解决方案 »

  1.   

    我没有金山词霸,但是无标题窗体可以自己在拖动的时候移动自己,也可以在size的时候自己size,即伪装都能够始终显示窗体的内容。
      

  2.   

    在Winamp中,不管系统的设置是如何,移动Winamp的窗口的过程中总是会显示窗口内容。其实这样做的道理很简单,因为在显示虚线框的时候,磁性窗口的吸附效果不怎么好,大家可以亲手试试。那如何也做成和Winamp一样呢?其实只要一个API函数就搞定了,:),代码如下:SystemParametersInfo(SPI_SETDRAGFULLWINDOWS,true,NULL,SPIF_SENDCHANGE);在窗口移动之前,通过调用上面的函数,就能达到Winamp一样的效果了。关于SystemParametersInfo这个函数及参数的具体用法,请参见MSDN
      

  3.   

    Option Explicit
    Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef lpvParam As Any, ByVal fuWinIni As Long) As Long
    Private Const SPI_SETDRAGFULLWINDOWS = 37
    Private Const SPIF_SENDWININICHANGE = &H2Private Sub Form_Load()
        SystemParametersInfo SPI_SETDRAGFULLWINDOWS, 1, vbNull, SPIF_SENDWININICHANGE
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        SystemParametersInfo SPI_SETDRAGFULLWINDOWS, 0, vbNull, SPIF_SENDWININICHANGE
    End Sub这样已经实现不显示虚线框,现在的关键整个系统的设置都改变了,解决方法首先得到当前的参数,同样使用那个函数,参数为SPI_GETDRAGFULLWINDOWS,在鼠标点中的时候设置,松开的时候恢复,因为一个鼠标不会同时拖动两个窗口,所以不会冲突。
      

  4.   

    谢谢 jennyvenus() 您的方法 我试过了 但是我想讨论的是 如果实现通用(xp 2k /en cn)的虚线框缓冲 这样可以让无框体的窗口变形更好 无框体的窗口在xp下有虚线框缓冲 但是在2K下面就没有 我现在正在测试ActiveSkin看看 这个的通用性能如何 (我想老外的东西在自己的系统上不会跑的有问题吧 呵呵 )
      

  5.   

    ActiveSkin也是没有缓冲 不过ActiveSkin的变化很流畅 另外本人在Pwin98试过 也有虚线框体缓冲form重画的过程这个的确是和操作系统有关系