Как запретить перемещение формы за заголовок - Visual Basic .NET
Формулировка задачи:
Как запретить перемещение формы за заголовок?
Решение задачи: «Как запретить перемещение формы за заголовок»
textual
Листинг программы
Imports System.Runtime.InteropServices
Public Class Form1
Const SC_CLOSE As Integer = &HF010
Const MF_BYCOMMAND As Integer = 0
Const WM_NCLBUTTONDOWN As Integer = &HA1
Const WM_NCHITTEST As Integer = &H84
Const HTCAPTION As Integer = 2
<DllImport("User32.dll")> _
Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Integer
End Function
<DllImport("User32.dll")> _
Private Shared Function GetSystemMenu(ByVal hWnd As IntPtr, ByVal bRevert As Boolean) As IntPtr
End Function
<DllImport("User32.dll")> _
Private Shared Function RemoveMenu(ByVal hMenu As IntPtr, ByVal uPosition As Integer, ByVal uFlags As Integer) As Boolean
End Function
Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = WM_NCLBUTTONDOWN Then
Dim result As Integer = SendMessage(m.HWnd, WM_NCHITTEST, IntPtr.Zero, m.LParam)
If result = HTCAPTION Then
Return
End If
End If
MyBase.WndProc(m)
End Sub
Protected Overrides Sub OnHandleCreated(ByVal e As EventArgs)
MyBase.OnHandleCreated(e)
Dim hMenu As IntPtr = GetSystemMenu(Handle, False)
RemoveMenu(hMenu, SC_CLOSE, MF_BYCOMMAND)
End Sub
End Class