天下第二博

Tian Xia The Second BO
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

c# 窗体全屏显示的完整范例

Posted on 2010-08-22 01:01  Nuke'Blog  阅读(1805)  评论(0编辑  收藏  举报

全屏窗体的完整方法:

1.隐藏任务栏

2.设置工作区域

3.窗体最大化

此方法通用wince/mobile/ppc,但api声明要修改为coredll.dll的引用。

 

 

代码
bool fullscreen = false;   
Rectangle rect 
= new Rectangle();   
private void button4_Click(object sender, EventArgs e)   
{   
    fullscreen 
= !fullscreen;//循环。点一次全屏,再点还原。   
    SetFullScreen(fullscreen, ref rect);   
    
if (fullscreen)   
    {   
        
this.WindowState = FormWindowState.Maximized;//全屏   
    }   
    
else  
    {   
        
this.WindowState = FormWindowState.Normal;//还原   
    }   
}   
  
/// <summary>   
/// 设置全屏或这取消全屏   
/// </summary>   
/// <param name="fullscreen">true:全屏 false:恢复</param>   
/// <param name="rectOld">设置的时候,此参数返回原始尺寸,恢复时用此参数设置恢复</param>   
/// <returns>设置结果</returns>   
public static bool SetFullScreen(bool fullscreen, ref Rectangle rectOld)   
{   
    
int Hwnd = 0;   
    Hwnd 
= FindWindow("Shell_TrayWnd"null);   
    
if (Hwnd == 0return false;   
    
if (fullscreen)   
    {   
        ShowWindow(Hwnd, SW_HIDE);   
        Rectangle rectFull 
= Screen.PrimaryScreen.Bounds;   
        SystemParametersInfo(SPI_GETWORKAREA, 
0ref rectOld, SPIF_UPDATEINIFILE);//get   
        SystemParametersInfo(SPI_SETWORKAREA, 0ref rectFull, SPIF_UPDATEINIFILE);//set   
    }   
    
else  
    {   
        ShowWindow(Hwnd, SW_SHOW);   
        SystemParametersInfo(SPI_SETWORKAREA, 
0ref rectOld, SPIF_UPDATEINIFILE);   
    }   
    
return true;   
}   
  
[DllImport(
"user32.dll", EntryPoint = "ShowWindow")]   
public static extern int ShowWindow(int hwnd, int nCmdShow);   
public const int SW_SHOW = 5public const int SW_HIDE = 0;   
  
[DllImport(
"user32.dll", EntryPoint = "SystemParametersInfo")]   
private static extern int SystemParametersInfo(int uAction, int uParam, ref Rectangle lpvParam, int fuWinIni);   
public const int SPIF_UPDATEINIFILE = 0x1;   
public const int SPI_SETWORKAREA = 47;   
public const int SPI_GETWORKAREA = 48;   
  
[DllImport(
"user32.dll", EntryPoint = "FindWindow")]   
private static extern int FindWindow(string lpClassName, string lpWindowName);