您的位置:首页 > 其它

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

2008-05-10 18:19 656 查看

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, 0, 0, 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;


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: