C# 改变无边框窗体尺寸大小的方法
code highlighting produced by actipro codehighlighter (freeware)
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;
}
}