DotNet编程-星光伴我行

滴滴真谛 水滴石穿

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

 

This is the code form the menu system that starts the XNA game.


    var process = Process.Start(info);
    var currentProcess = Process.GetCurrentProcess();
    while (!process.HasExited)
    {
        Thread.Sleep(50);
        if (GetForegroundWindow() == currentProcess.MainWindowHandle)
        {
            Activate(process.MainWindowHandle);
        }
    }

This is the code that sets the XNA game as the foreground window.


        /// <summary>
        
/// Sets the window to be foreground
        
/// </summary>
        [DllImport("User32")]
        private static extern int SetForegroundWindow(IntPtr hwnd);
 
        /// <summary>
        
/// Activate or minimize a window
        
/// </summary>
        [DllImportAttribute("User32.DLL")]
        private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
        private const int SW_SHOW = 5;
        private const int SW_MINIMIZE = 6;
        private const int SW_RESTORE = 9;
 
        /// <summary>
        
/// The GetForegroundWindow function returns a handle to the foreground window.
        
/// </summary>
        [DllImport("user32.dll")]
        private static extern IntPtr GetForegroundWindow();
 
        private static void Activate(IntPtr windowHandle)
        {
            ShowWindow(windowHandle, SW_RESTORE);
            SetForegroundWindow(windowHandle);
        }


 

 

//设置幕大小,其中ChatForm为聊天WinForm窗体。
ChatForm form = new ChatForm();
                int screenWidth = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width;// System.Windows.Forms.SystemInformation.WorkingArea.Width;
                int screenHeight = System.Windows.Forms.SystemInformation.WorkingArea.Height;
                form.Size = new System.Drawing.Size((int)(screenWidth * 0.2f * 1000) / 1000, (int)(screenHeight));
                form.FormLocation = new System.Drawing.Point((int)(screenWidth * 0.8f * 1000) / 10000);
                form.Show();
          
                IntPtr ip = Window.Handle;
                System.Windows.Forms.Form gameForm = System.Windows.Forms.Control.FromHandle(ip) as System.Windows.Forms.Form;
                if (gameForm != null)
                {
                    gameForm.Location = new System.Drawing.Point(00);
                    gameForm.Size = new System.Drawing.Size((int)(screenWidth * 0.8f * 1000) / 1000, (int)(screenHeight));
                }

===========================================================================================

int screenWidth = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width;
            int screenHeight = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height;
            graphics.PreferredBackBufferWidth = (int)(screenWidth * 0.8f);
            graphics.PreferredBackBufferHeight = screenHeight;


this.Window.AllowUserResizing = true;
this.Window.ClientSizeChanged += new EventHandler<EventArgs>(Window_ClientSizeChanged);

//获取除任务栏之外的显示屏高度
 System.Windows.Forms.SystemInformation.WorkingArea.Height;


////////////////////////////////////////////////////////////////////////////////////////////////////////////////
string currentScreenSize_OutTaskBar=SystemInformation.WorkingArea.Width.ToString() + "," +SystemInformation.WorkingArea.Height.ToString();

MessageBox.Show("当前的屏幕除任务栏外的工作域大小为:"+currentScreenSize_OutTaskBar);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////////////////
string currentScreenSize=System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width.ToString() + "," + System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height.ToString();

MessageBox.Show("当前的屏幕包括任务栏的工作域大小为:"+currentScreenSize);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Size OutTaskBarSize = new Size(SystemInformation.WorkingArea.Width, SystemInformation.WorkingArea.Height);

Size ScreenSize = new Size(System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width, System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height);

Size TaskBarSize;

TaskBarSize = new Size(
                (ScreenSize.Width - (ScreenSize.Width - OutTaskBarSize.Width)),
                (ScreenSize.Height - OutTaskBarSize.Height)
                );

MessageBox.Show("任务栏大小:" + TaskBarSize.Width + "," + TaskBarSize.Height);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

posted on 2011-11-24 20:20  DotNet编程  阅读(265)  评论(0编辑  收藏  举报