日期:2014-05-18 浏览次数:21133 次
using System; using System.Drawing; using System.Windows.Forms; using System.Runtime.InteropServices; namespace LC_Game { /// <summary> /// Selected Win AI Function Calls /// </summary> public class WinApi { [DllImport("user32.dll", EntryPoint = "GetSystemMetrics")] public static extern int GetSystemMetrics(int which); [DllImport("user32.dll")] public static extern void SetWindowPos(IntPtr hwnd, IntPtr hwndInsertAfter, int X, int Y, int width, int height, uint flags); private const int SM_CXSCREEN = 0; private const int SM_CYSCREEN = 1; private static IntPtr HWND_TOP = IntPtr.Zero; private const int SWP_SHOWWINDOW = 64; // 0x0040 public static int ScreenX { get { return GetSystemMetrics(SM_CXSCREEN);} } public static int ScreenY { get { return GetSystemMetrics(SM_CYSCREEN);} } public static void SetWinFullScreen(IntPtr hwnd) { SetWindowPos(hwnd, HWND_TOP, 0, 0, ScreenX, ScreenY, SWP_SHOWWINDOW); } } /// <summary> /// Class used to preserve / restore state of the form /// </summary> public class FormState { private FormWindowState winState; private FormBorderStyle brdStyle; private bool topMost; private Rectangle bounds; private bool IsMaximized = false; public void Maximize(Form targetForm) { if (!IsMaximized) { IsMaximized = true; Save(targetForm); targetForm.WindowState = FormWindowState.Maximized; targetForm.FormBorderStyle = FormBorderStyle.None; targetForm.TopMost = true; WinApi.SetWinFullScreen(targetForm.Handle); } } public void Save(Form targetForm) { winState = targetForm.WindowState; brdStyle = targetForm.FormBorderStyle; topMost = targetForm.TopMost; bounds = targetForm.Bounds; } public void Restore(Form targetForm) { targetForm.WindowState = winState; targetForm.FormBorderStyle = brdStyle; targetForm.TopMost = topMost; targetForm.Bounds = bounds; IsMaximized = false; } } }
------解决方案--------------------
据说Visual C#初学者工具包中有个屏保程序
屏保程序肯定是要全屏的,楼主不妨参考下
单是无边框窗体最大化是无法实现的,
隐藏控件还要把桌面的任务栏给隐藏吧
------解决方案--------------------