C#实现无标题窗体缩放大小

在C#中,如果将Form窗体的FormBorderStyle属性设置为FormBorderStyle.None,即隐藏自带的标题栏,那么这时候我们的窗体就不能再任意的拉伸缩放大小了。但是我们又有这样的需求,那么怎么办呢?


请直接看代码(重写窗体的WndProc方法):

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;

}

}

  1. 本网站所收集的部分资料来源于互联网,本站不对其真实性负责,也不构成任何其他建议。如果您发现有侵犯您权益的内容,请与我们取得联系,我们会及时修改或删除。
  2. 传递知识、传递力量,欢迎各位网友对本站的文章进行转载和分享。
  3. 本站QQ群交流群:904314688  群号:904314688
发表评论
 
评论列表(目前共有 条评论)
暂时还没有评论哦~

文章搜索

商家广告


版权所有:秋风雅居 (www.198933.com) ©2024 All Rights Reserved.

粤ICP备20031662号