磁性窗体的实现

网友问我的一个问题:移动一个窗体时如何同时移动另一个窗体?类似winAMP里的效果。

其实实现起来也很简单:截获主窗体的WM_MOVE(窗体移动)消息,同时设置附属窗体的位置。

代码如下:

protected   override   void  WndProc( ref    Message m)
        
{
            
const int WM_MOVE = 0x3;
            
            
if (m.Msg == WM_MOVE )
            
{
                
if (frm != null)
                
{
                    frm.Left 
= this.Left + this.Width;
                    frm.Top 
= this.Top;
                    
return;
                }

            }

            
base.WndProc(ref   m);
        }


frm即附属窗体的对象

你可能感兴趣的:(磁性窗体的实现)