嵌入式 · 2010-05-25

PPC winform 程序 如何 全屏(C#)(转)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Text;

namespace Hello_World
{
     public partial class StartForm : Form
     {
        private Timer timer;
        public StartForm()
        {

            InitializeComponent();
            IntPtr hWnd = API.FindWindow(this.Text);
            if (hWnd != IntPtr.Zero)
            {
                System.Diagnostics.Debug.WriteLine("hWnd ist nicht null");
                this.MaximizeBox = false;
                this.MinimizeBox = false;
                this.Focus();

                SHAPI.SetForegroundWindow(hWnd);
                SHAPI.FullScreen(hWnd);
            }
       }
    }

   public class API
    {
        [DllImport("coredll.dll", EntryPoint = "FindWindow")]
        private extern static IntPtr FindWindow(string lpClassName, string lpWindowName);

        public static IntPtr FindWindow(string windowName)
        {
            return FindWindow(null, windowName);
        }
    }

    public class SHAPI
    {
        public const int SHFS_SHOWTASKBAR = 1;
        public const int SHFS_HIDETASKBAR = 2;
        public const int SHFS_SHOWSIPBUTTON = 4;
        public const int SHFS_HIDESIPBUTTON = 8;
        public const int SHFS_SHOWSTARTICON = 16;
        public const int SHFS_HIDESTARTICON = 32;

        [DllImport("aygshell.dll")]
        private extern static bool SHFullScreen(IntPtr hWnd, int dwState);

        public static bool FullScreen(IntPtr hWnd)
        {
             return SHFullScreen(hWnd, SHFS_HIDESTARTICON | SHFS_HIDETASKBAR);
        }

        [DllImport("coredll.dll")]
        internal static extern int SetForegroundWindow(IntPtr hWnd);
   }
}

下面的代码仅仅隐藏开始菜单但程序退出后会重现:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Text;

namespace Wm5ppc
{
   public partial class Form1 : Form
   {
      public Form1 ()
      {
         InitializeComponent ();
         this.MinimizeBox = false;
      }
      private void Form1_Activated (object sender, EventArgs e)
      {
         IntPtr hWnd = this.Handle;
         SHAPI.FullScreen (hWnd);
      }
   }

   public class SHAPI
   {
      public const int SHFS_SHOWTASKBAR = 1;
      public const int SHFS_HIDETASKBAR = 2;
      public const int SHFS_SHOWSIPBUTTON = 4;
      public const int SHFS_HIDESIPBUTTON = 8;
      public const int SHFS_SHOWSTARTICON = 16;
      public const int SHFS_HIDESTARTICON = 32;
      [DllImport ("aygshell.dll")]
      private extern static bool SHFullScreen (IntPtr hWnd, int dwState);
      
      public static bool FullScreen (IntPtr hWnd)
      {
         return SHFullScreen (hWnd, SHFS_HIDESTARTICON);
      }
   }
}

以上代码本人经过测试,好像不是很稳定,试过几次是可以全屏的,连开始菜单也没有了,现在一直都没办法全屏,我测试的系统是WINCE5,不知道是 不是漏了哪个步骤没做好。