C#中无边框窗体改变大小

        const int WM_NCHITTEST = 0x0084;
        
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)
        {
            
base.WndProc(ref m);
            
switch (m.Msg)
            {
                
case WM_NCHITTEST:
                    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;
            }
        }
posted on 2008-05-05 17:40  迷你软件  阅读(1300)  评论(0)    收藏  举报

本网站绝大部分资源来源于Internet,本站所有作品版权归原创作者所有!!如有以下内容:章节错误、非法内容、作者署名出错、版权疑问、作品内容有违相关法律等请及时与我联系. 我将在第一时间做出响应!本站所有文章观点不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。