窗口模式与全屏模式切换,创建全屏窗口

来源:互联网 发布:怎么查看淘宝注册时间 编辑:程序博客网 时间:2024/05/19 09:47
HWND m_hWnd;
RECT m_WndRect;
LONG m_Style;
enum WINDOW_SHOW
{
    WINDOW_FULLSCREEN,
    WINDOW_800_600,
    WINDOW_1024_768
}
;
WINDOW_SHOW m_eWndShow;

m_eWndShow 
= WINDOW_800_600;

//创建主窗口
HWND hWnd;
hWnd 
= CreateWindowEx(  ...  );
if ( !hWnd )
    
return FALSE;
m_hWnd 
= hWnd;


BOOL SetFullScreen()

    
//获得并储存当前窗口信息,用于以后恢复
    GetWindowRect( m_hWnd, &m_WndRect ); //获得当前窗口RECT
    LONG style = GetWindowLong( m_hWnd, GWL_STYLE ); //获得当前窗口的类型
    m_Style = style; //储存当前的窗口类型
    
//设置窗口显示类型
    style &= ~WS_CAPTION;
    SetWindowLong( m_hWnd, GWL_STYLE, style );
    
//获得屏幕大小
    int ScreenX = GetSystemMetrics( SM_CXSCREEN );
    
int ScreenY = GetSystemMetrics( SM_CYSCREEN );
    
if ( !MoveWindow( m_hWnd, 00, ScreenX, ScreenY, TRUE ) )
        
return FALSE;

    
return TRUE;


BOOL ResetWindow()
{
    
//设置窗口类型为原来的类型
    SetWindowLong( m_hWnd, GWL_STYLE, m_Style );
    
if ( !MoveWindow( m_hWnd, m_WndRect.left, m_WndRect.top,
        m_WndRect.right
-m_WndRect.left, m_WndRect.bottom-m_WndRect.top, TRUE ) )
        
return FALSE;

    
if ( m_WndRect.right-m_WndRect.left == 800 )
        m_eWndShow 
= WINDOW_800_600;
    
else if( m_WndRect.right-m_WndRect.left == 1024 )
        m_eWndShow 
= WINDOW_1024_768;

    
return TRUE;
}



//消息处理
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    
static int wmId;

    
switch (message)
    
{
    
case WM_DESTROY:
        PostQuitMessage(
0);
        
break;
    
case WM_KEYDOWN:
        
switch (wParam)
        
{
        
case VK_RETURN:
            
if ( m_eWndShow != WINDOW_FULLSCREEN )
            
{
                SetFullScreen();
                m_eWndShow 
= WINDOW_FULLSCREEN;
            }

            
break;
        
case VK_ESCAPE:
            
if ( m_eWndShow == WINDOW_FULLSCREEN )
            
{
                ResetWindow();
            }

            
break;
        }

        
break;
    
default:
        
return DefWindowProc(hWnd, message, wParam, lParam);
    }


    
return 0;
}