求一段代码 实现无边框窗体 改变大小(C#)

龟宝宝 2011-10-21 03:05:53

一般的软件在右下角个 标志 鼠标按下后就能改变 调整窗体大小 但是不知道具体怎么实现的 求段代码查考下
...全文
302 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2011-10-22
  • 打赏
  • 举报
回复
这个很简单,到以下地址去看看,应该是你需要的
http://download.csdn.net/detail/mask_ll/3709169
dylike 2011-10-22
  • 打赏
  • 举报
回复
Protected Overrides Sub WndProc(ByRef m As Message)
Select Case m.Msg
Case Win32.WM_NCHITTEST
Dim vPoint As New Point(CInt(m.LParam) And &HFFFF, CInt(m.LParam) >> 16 And &HFFFF)
vPoint = PointToClient(vPoint)
If MaximizeBox Then
If vPoint.X <= 3 Then
If vPoint.Y <= 3 Then
m.Result = CType(Win32.HTTOPLEFT, IntPtr)
ElseIf vPoint.Y >= Height - 10 Then
m.Result = CType(Win32.HTBOTTOMLEFT, IntPtr)
Else
m.Result = CType(Win32.HTLEFT, IntPtr)
End If
ElseIf vPoint.X >= Width - 10 Then
If vPoint.Y <= 10 Then
m.Result = CType(Win32.HTTOPRIGHT, IntPtr)
ElseIf vPoint.Y >= Height - 10 Then
m.Result = CType(Win32.HTBOTTOMRIGHT, IntPtr)
Else
m.Result = CType(Win32.HTRIGHT, IntPtr)
End If
ElseIf vPoint.Y <= 3 Then
m.Result = CType(Win32.HTTOP, IntPtr)
ElseIf vPoint.Y >= Height - 10 Then
m.Result = CType(Win32.HTBOTTOM, IntPtr)
Else
MyBase.WndProc(m)
End If
End If
Exit Select
Case Else
MyBase.WndProc(m)
Exit Select
End Select
End Sub



Public Const MF_REMOVE As Integer = &H1000

Public Const SC_RESTORE As Integer = &HF120
'还原
Public Const SC_MOVE As Integer = &HF010
'移动
Public Const SC_SIZE As Integer = &HF000
'大小
Public Const SC_MINIMIZE As Integer = &HF020
'最小化
Public Const SC_MAXIMIZE As Integer = &HF030
'最大化
Public Const SC_CLOSE As Integer = &HF060
'关闭
Public Const WM_SYSCOMMAND As Integer = &H112
Public Const WM_COMMAND As Integer = &H111

Public Const GW_HWNDFIRST As Integer = 0
Public Const GW_HWNDLAST As Integer = 1
Public Const GW_HWNDNEXT As Integer = 2
Public Const GW_HWNDPREV As Integer = 3
Public Const GW_OWNER As Integer = 4
Public Const GW_CHILD As Integer = 5

Public Const WM_LBUTTONDOWN As Integer = &H201
Public Const WM_LBUTTONUP As Integer = &H202
Public Const WM_LBUTTONDBLCLK As Integer = &H203
Public Const WM_WINDOWPOSCHANGING As Integer = &H46
Public Const WM_PAINT As Integer = &HF
Public Const WM_CREATE As Integer = &H1
Public Const WM_ACTIVATE As Integer = &H6
Public Const WM_NCCREATE As Integer = &H81
Public Const WM_NCCALCSIZE As Integer = &H83
Public Const WM_NCPAINT As Integer = &H85
Public Const WM_NCACTIVATE As Integer = &H86
Public Const WM_NCLBUTTONDOWN As Integer = &HA1
Public Const WM_NCLBUTTONUP As Integer = &HA2
Public Const WM_NCLBUTTONDBLCLK As Integer = &HA3
Public Const WM_NCMOUSEMOVE As Integer = &HA0
龟宝宝 2011-10-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wwm402654282 的回复:]
5楼的不管用吗? 五楼的是4边4角都可以的 是只要一个角的吗?
[/Quote]
恩 正如您说的 我只希望右下角的那个就可以了
wwm402654282 2011-10-21
  • 打赏
  • 举报
回复
5楼的不管用吗? 五楼的是4边4角都可以的 是只要一个角的吗?
jakecheng 2011-10-21
  • 打赏
  • 举报
回复
你可以试试用button_click()事件做一下……
龟宝宝 2011-10-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zyloveyrf 的回复:]
鼠标按下事件 改变窗体大小???
[/Quote]
是这样的 因为无边框的窗体嘛 在窗体的右下角会有个 三条虚线 鼠标按下后可以调整窗体大小
但是因为设计原因 这个部分被panel遮盖住了 就替换个图片的 三条虚线 来实现窗体大小的调整
现状不知道该怎么做
wwm402654282 2011-10-21
  • 打赏
  • 举报
回复
萧炎 2011-10-21
  • 打赏
  • 举报
回复
卧_槽 2011-10-21
  • 打赏
  • 举报
回复
mousedown响应window api
TMajier 2011-10-21
  • 打赏
  • 举报
回复

/// <summary>
/// 最大化、正常
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void buttonSize_Click(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Maximized)
{
this.WindowState = FormWindowState.Normal;
Size = new Size(1024, 728);
this.StartPosition = FormStartPosition.CenterScreen;
}
else
{
this.WindowState = FormWindowState.Maximized;
}
}

萧炎 2011-10-21
  • 打赏
  • 举报
回复
鼠标按下事件 改变窗体大小???

110,571

社区成员

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

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

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