窗口模式与全屏模式切换,创建全屏窗口
来源:互联网 发布:怎么查看淘宝注册时间 编辑:程序博客网 时间: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, 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;
}
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;
}
- 窗口模式与全屏模式切换,创建全屏窗口
- vitamio窗口layout模式切换-全屏黑边问题
- 全屏与窗口,全屏交互
- 创建XWindow全屏窗口
- 创建XWindow全屏窗口
- 全屏 去除标题栏 窗口模式Activity
- MASM32编程演示程序在窗口模式和全屏模式间切换
- D3DPRESENT_PARAMETERS 说明及 DirectX窗口模式和全屏模式的Device创建
- D3DPRESENT_PARAMETERS 说明及 DirectX窗口模式和全屏模式的Device创建
- 安卓全屏模式与切换
- 窗口全屏
- 全屏窗口
- 全屏窗口
- 全屏窗口
- 全屏窗口
- 窗口全屏
- 创建一个全屏的窗口
- 游戏窗口模式和全屏模式的区别在哪?
- 生成的DLL中XML注释看不见
- PHP中大图缩小图的实例
- 成批处理
- Exchange群集实现
- paypal ipn的使用指南
- 窗口模式与全屏模式切换,创建全屏窗口
- Exchange群集环境搭建
- CSDN里的第一篇文章
- 我的VC++ RPG游戏紫日2037源代码开放
- 用pc喇叭播放音乐
- 介绍ASP.NET抽象工厂模式概念
- 正确实现 IDisposable 接口 (转)
- php编写的ACCESS处理类
- Exchange实例排错分析