// FullScreenDlg.cpp : implementation file
//
#include "stdafx.h"
#include "FullScreenDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CFullScreenDlg dialog
BEGIN_MESSAGE_MAP(CFullScreenDlg, CDialog)
//{{AFX_MSG_MAP(CFullScreenDlg)
ON_WM_DESTROY()
ON_WM_ACTIVATEAPP()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFullScreenDlg message handlers
void CFullScreenDlg::OnDestroy()
{
ShowWindow(SW_SHOW);
ShowWindow(SW_HIDE);
CDialog::OnDestroy();
}
void CFullScreenDlg::ThrowOpenDlg()
{
ZeroMemory(&m_WorkArea,sizeof(m_WorkArea));
if(::SystemParametersInfo(SPI_GETWORKAREA,
0,
&m_WorkArea,
0))
{
::SystemParametersInfo(SPI_SETWORKAREA,
0,
NULL,
SPIF_SENDCHANGE);
}
if(!m_bIsToolBarHidden)
{
CWnd* pTaskBar = CWnd::FindWindow(_T("Shell_TrayWnd"),"");
if(pTaskBar && ::IsWindow(*pTaskBar))
{
m_bWasToolBarVisible = pTaskBar->IsWindowVisible();
pTaskBar->ShowWindow(SW_HIDE);
m_bIsToolBarHidden = TRUE;
}
}
if(!m_bAreDisplaySettingsChanged)
{
DWORD dmPelsWidth = m_DlgRect.Width();
DWORD dmPelsHeight = m_DlgRect.Height();
m_bAreDisplaySettingsSaved = ::EnumDisplaySettings(NULL,
ENUM_REGISTRY_SETTINGS,
&m_SaveDevMode);
BOOL bIsMaxColorDepth = FALSE;
DEVMODE MaxColorDepthDevMode;
ZeroMemory(&MaxColorDepthDevMode,sizeof(MaxColorDepthDevMode));
MaxColorDepthDevMode.dmSize = sizeof(MaxColorDepthDevMode);
BOOL bIsTheSameColorDepth = FALSE;
DEVMODE TheSameColorDepth;
ZeroMemory(&TheSameColorDepth,sizeof(TheSameColorDepth));
TheSameColorDepth.dmSize = sizeof(TheSameColorDepth);
DEVMODE TempDevMode;
DWORD dwModeNum;
for(dwModeNum=0;;dwModeNum++)
{
ZeroMemory(&TempDevMode,sizeof(TempDevMode));
TempDevMode.dmSize = sizeof(TempDevMode);
if(!::EnumDisplaySettings(NULL,
dwModeNum,
&TempDevMode))
break;
if(TempDevMode.dmPelsWidth != dmPelsWidth ||
TempDevMode.dmPelsHeight != dmPelsHeight)
continue;
if(TempDevMode.dmBitsPerPel > MaxColorDepthDevMode.dmBitsPerPel)
{
MaxColorDepthDevMode = TempDevMode;
bIsMaxColorDepth = TRUE;
}
if(!bIsTheSameColorDepth)
{
TheSameColorDepth = TempDevMode;
bIsTheSameColorDepth = TRUE;
}
}
m_bAreDisplaySettingsChanged = bIsMaxColorDepth &&
::ChangeDisplaySettings(&MaxColorDepthDevMode,0) == DISP_CHANGE_SUCCESSFUL ||
bIsTheSameColorDepth &&
::ChangeDisplaySettings(&TheSameColorDepth,0) == DISP_CHANGE_SUCCESSFUL;
}
ShowWindow(SW_SHOWNORMAL);
CenterWindow();
}
void CFullScreenDlg::WrapUpDlg()
{
if(m_bAreDisplaySettingsChanged && m_bAreDisplaySettingsSaved)
::ChangeDisplaySettings(&m_SaveDevMode,0);
m_bAreDisplaySettingsChanged = m_bAreDisplaySettingsSaved = FALSE;
if(m_bIsToolBarHidden)
{
CWnd* pTaskBar = CWnd::FindWindow(_T("Shell_TrayWnd"),"");
if(pTaskBar &&
::IsWindow(*pTaskBar) &&
m_bWasToolBarVisible)
pTaskBar->ShowWindow(SW_SHOW);
}
if(!CRect(m_WorkArea).IsRectEmpty())
::SystemParametersInfo(SPI_SETWORKAREA,
0,
&m_WorkArea,
SPIF_SENDCHANGE);
m_bIsToolBarHidden = m_bWasToolBarVisible = FALSE;
ShowWindow(SW_SHOWMINIMIZED);
}
BOOL CFullScreenDlg::OnInitDialog()
{
ModifyStyle(WS_THICKFRAME |
WS_BORDER |
WS_CAPTION,
WS_SYSMENU);
GetClientRect(m_DlgRect);
CDialog::OnInitDialog();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CFullScreenDlg::Init()
{
m_bAreDisplaySettingsSaved = FALSE;
m_bAreDisplaySettingsChanged = FALSE;
m_bIsToolBarHidden = FALSE;
m_bWasToolBarVisible = FALSE;
ZeroMemory(&m_SaveDevMode,sizeof(m_SaveDevMode));
m_SaveDevMode.dmSize = sizeof(m_SaveDevMode);
ZeroMemory(&m_WorkArea,sizeof(m_WorkArea));
}
void CFullScreenDlg::OnActivateApp(BOOL bActive, HTASK hTask)
{
if(bActive)
ThrowOpenDlg();
else
WrapUpDlg();
CDialog::OnActivateApp(bActive, hTask);
}
没有合适的资源?快使用搜索试试~ 我知道了~
VC 全屏对话框.zip
共2个文件
cpp:1个
h:1个
5星 · 超过95%的资源 需积分: 3 129 下载量 36 浏览量
2009-05-16
21:14:29
上传
评论
收藏 2KB ZIP 举报
温馨提示
VC 全屏对话框.zip VC 全屏对话框.zip VC 全屏对话框.zip VC 全屏对话框.zip
资源推荐
资源详情
资源评论
收起资源包目录
VC 全屏对话框.zip (2个子文件)
FullScreenDlg.cpp 4KB
FullScreenDlg.h 2KB
共 2 条
- 1
资源评论
- ja81232012-06-10需要调试
- happy0542012-08-19对全屏程序比较实用。
Jlins
- 粉丝: 5882
- 资源: 173
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功