vb.net – 使Winforms全屏
发布时间:2020-12-17 00:03:45 所属栏目:大数据 来源:网络整理
导读:我需要全屏制作winform.这是我在网上找到的. 1. Hook WinProc to catch WM_SYSCOMMAND2. Check wParam == SC_MAXIMIZE and then3. Set my windiw's attributesMe.ResizeMode = ResizeMode.NoResizeMe.WindowStyle = WindowStyle.NoneMe.WindowState = Window
我需要全屏制作winform.这是我在网上找到的.
1. Hook WinProc to catch WM_SYSCOMMAND 2. Check wParam == SC_MAXIMIZE and then 3. Set my windiw's attributes Me.ResizeMode = ResizeMode.NoResize Me.WindowStyle = WindowStyle.None Me.WindowState = WindowState.Maximized 我是vb.net的新手,不知道如何做第1步或第2步.有人可以给我一个片段或指向正确的方向吗? 谢谢giodamelio
诀窍是获取HwndSource并调用其AddHook()方法.这有效:
Imports System.Windows.Interop Class Window1 Protected Overrides Sub OnSourceInitialized(ByVal e As System.EventArgs) MyBase.OnSourceInitialized(e) DirectCast(PresentationSource.FromVisual(Me),HwndSource).AddHook(AddressOf WndProc) End Sub Private Const WM_SYSCOMMAND As Integer = &H112 Private Const SC_MAXIMIZE As Integer = &HF030 Private Function WndProc(ByVal hWnd As IntPtr,ByVal msg As Integer,ByVal wp As IntPtr,ByVal lp As IntPtr,ByRef handled As Boolean) As IntPtr If msg = WM_SYSCOMMAND AndAlso wp.ToInt32() = SC_MAXIMIZE Then Me.ResizeMode = ResizeMode.NoResize Me.WindowStyle = WindowStyle.None Me.WindowState = WindowState.Maximized handled = True End If End Function End Class Winforms表单的相同代码: Public Class Form1 Private Const WM_SYSCOMMAND As Integer = &H112 Private Const SC_MAXIMIZE As Integer = &HF030 Protected Overrides Sub WndProc(ByRef m As Message) If m.Msg = WM_SYSCOMMAND AndAlso m.WParam.ToInt32() = SC_MAXIMIZE Then Me.FormBorderStyle = FormBorderStyle.None Me.WindowState = FormWindowState.Maximized Return End If MyBase.WndProc(m) End Sub Protected Overrides Function ProcessCmdKey(ByRef msg As Message,ByVal keyData As Keys) As Boolean '' Restore window when the user presses Escape If Me.WindowState = FormWindowState.Maximized AndAlso keyData = Keys.Escape Then Me.FormBorderStyle = Windows.Forms.FormBorderStyle.Sizable Me.WindowState = FormWindowState.Normal End If Return MyBase.ProcessCmdKey(msg,keyData) End Function End Class (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |