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
/// <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;
}
}
但是因为设计原因 这个部分被panel遮盖住了 就替换个图片的 三条虚线 来实现窗体大小的调整
现状不知道该怎么做
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
http://download.csdn.net/detail/mask_ll/3709169