C# 无边框窗体随意拖动和改变尺寸

如题

 

ExpandedBlockStart.gif 代码
const   int  HTLEFT  =   10 ;
const   int  HTRIGHT  =   11 ;
const   int  HTTOP  =   12 ;
const   int  HTTOPLEFT  =   13 ;
const   int  HTTOPRIGHT  =   14 ;
const   int  HTBOTTOM  =   15 ;
const   int  HTBOTTOMLEFT  =   0x10 ;
const   int  HTBOTTOMRIGHT  =   17 ;

protected   override   void  WndProc( ref  Message m)
{
    
switch  (m.Msg)
    {
        
case   0x0084 :
            
base .WndProc( ref  m);
            Point vPoint 
=   new  Point(( int )m.LParam  &   0xFFFF ,
                (
int )m.LParam  >>   16   &   0xFFFF );
            vPoint 
=  PointToClient(vPoint);
            
if  (vPoint.X  <=   5 )
                
if  (vPoint.Y  <=   5 )
                    m.Result 
=  (IntPtr)HTTOPLEFT;
                
else   if  (vPoint.Y  >=  ClientSize.Height  -   5 )
                    m.Result 
=  (IntPtr)HTBOTTOMLEFT;
                
else  m.Result  =  (IntPtr)HTLEFT;
            
else   if  (vPoint.X  >=  ClientSize.Width  -   5 )
                
if  (vPoint.Y  <=   5 )
                    m.Result 
=  (IntPtr)HTTOPRIGHT;
                
else   if  (vPoint.Y  >=  ClientSize.Height  -   5 )
                    m.Result 
=  (IntPtr)HTBOTTOMRIGHT;
                
else  m.Result  =  (IntPtr)HTRIGHT;
            
else   if  (vPoint.Y  <=   5 )
                m.Result 
=  (IntPtr)HTTOP;
            
else   if  (vPoint.Y  >=  ClientSize.Height  -   5 )
                m.Result 
=  (IntPtr)HTBOTTOM;
            
break ;
        
case   0x0201 : // 鼠标左键按下的消息 
            m.Msg  =   0x00A1 ; // 更改消息为非客户区按下鼠标 
            m.LParam  =  IntPtr.Zero; // 默认值 
            m.WParam  =   new  IntPtr( 2 ); // 鼠标放在标题栏内 
             base .WndProc( ref  m);
            
break
        
default :
            
base .WndProc( ref  m);
            
break ;
    }
}

 

 

转载于:https://www.cnblogs.com/jiangshui/archive/2010/01/11/1644393.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值