WinForm如何处理消息,使无边框窗口具有win7/8/10靠边放大效果

finemi 2016-09-08 11:30:30
因为需要改变窗口边框的样子,所以准备使用无边框的+贴图+通过WndProc方法处理窗口消息 的方式来实现。
窗口的放大缩小以及拖动都可以,但是对于win7/8/10里面普通窗口具有的拖动窗口到左右时且鼠标在windows窗口最边时,该窗口将自动放大。

如下面两张图片:




可否让无边框窗口恢复这种效果呢?
我现在处理拖动和缩放的代码是:

protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WM_NCLBUTTONDBLCLK:
base.WndProc(ref m);
this.Invalidate();
return;
case WM_NCHITTEST:
base.WndProc(ref m);
Point lpint = new Point((int)m.LParam);
m.Result = (IntPtr)0x2;
//..........
return;
default:
base.WndProc(ref m);
return;
}

}

...全文
457 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Poopaye 2016-09-08
  • 打赏
  • 举报
回复
crystal_lz 2016-09-08
  • 打赏
  • 举报
回复
无边窗体本身就不具备这样的特性 别的一些软件也不是无边窗体做的 而是在绘制窗体的时候 连窗体非客户区(标题栏等)一起绘制 而不是用无边窗体绘制的
Forty2 2016-09-08
  • 打赏
  • 举报
回复
引用 楼主 finemi 的回复:
因为需要改变窗口边框的样子,所以准备使用无边框的+贴图+通过WndProc...
如果是完全无边框(也就是不带WS_THICKFRAME式样的),那么默认的Window消息处理,将不会放大靠边。 因为无边框也意味着大小不变(不可以放大)。
finemi 2016-09-08
  • 打赏
  • 举报
回复
引用 1 楼 shingoscar 的回复:
http://customerborderform.codeplex.com/
不太像用第三方的,没有太高的要求

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧