Wince 6.0 c# 中的全屏应用

本文关键字:应用 Wince | 更新日期: 2023-09-27 18:35:30

我有我的应用程序,并希望让它以全屏模式运行,没有任务栏。我发现了如何隐藏窗口栏,但是当我启动我的应用程序时,它并没有覆盖窗口任务栏的空间,尽管最后一个是隐藏的。

我找到了这个,但它不起作用。我找不到关于畏缩的例子。我有 FormBorderStyle = NoneWindowsState = Maximized

溶液:

我找到了一种方法。一个重要的提示是让窗口状态=正常(我花了一些时间才找到这个问题)。如果"窗口状态 = 最大化",则无法将窗体的高度设置为最大显示的高度。

我写了这段代码来探测它,它工作正常。是一个带有两个按钮的表单:按钮 1(全屏)和按钮 2(恢复默认屏幕)

    public partial class Form1 : Form
    {
        public Form1(){
               InitializeComponent();            
        }
    [DllImport("Coredll")]
    internal static extern IntPtr FindWindow(String lpClassName, String lpWindowName);
    [DllImport("coredll.dll")]
    internal static extern bool EnableWindow(IntPtr hwnd, Boolean bEnable);
    [DllImport("coredll.dll")]
    private static extern bool MoveWindow(IntPtr hWnd, int x, int y, int cx, int cy, bool repaint);

    public static bool EnableTaskBar(Boolean enable)
    {
        IntPtr hwnd;
        hwnd = FindWindow("HHTaskBar", "");
        if (enable) SetHHTaskBar();
        else HideHHTaskBar();
        return EnableWindow(hwnd, enable);
    }
    public static void HideHHTaskBar()
    {
        IntPtr iptrTB = FindWindow("HHTaskBar", null);
        MoveWindow(iptrTB, 0, Screen.PrimaryScreen.Bounds.Height,
        Screen.PrimaryScreen.Bounds.Width, 26, true);
    }
    public static void SetHHTaskBar()
    {
        IntPtr iptrTB = FindWindow("HHTaskBar", null);
        MoveWindow(iptrTB, 0, 294,
        Screen.PrimaryScreen.Bounds.Width, 26, true);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        EnableTaskBar(false);
        this.Width = Screen.PrimaryScreen.Bounds.Width;
        this.Height = Screen.PrimaryScreen.Bounds.Height;
        this.Left = 0;
        this.Top = 0;
    }
    private void button2_Click(object sender, EventArgs e)
    {
        EnableTaskBar(true);
    }
}

希望它能帮助其他人解决同样的问题!

感谢您的帮助!

Wince 6.0 c# 中的全屏应用

隐藏任务栏后,显式设置窗体的大小和位置:

myForm.Width = Screen.PrimaryScreen.Bounds.Width;
myForm.Height = Screen.PrimaryScreen.Bounds.Height;
myForm.Left = 0;
myForm.Top = 0;

我总是在需要时使用 SHFullScreen 来实现这一点。您将需要使用 PInvoke 来调用它。