在CMainFrame类中添加下列成员变量和成员函数(使用ClassWizard),下面是这些变量和函数的功能说明:

成员变量:
BOOL m_bFullScreen; //全屏幕显示标志
CRect m_FullScreenWindowRect; //全屏幕显示窗口Rect
WINDOWPLACEMENT m_wpPrev; //用于保存正常视图时的窗口位置信息
CToolBar * m_wndFullScreenBar; //全屏幕显示时的浮动工具条

成员函数:
void OnMenuFullscreen(); //全屏幕显示的处理函数
void OnGetMinMaxInfo(); //捕获WM_GETMINMAXINFO消息以便允许你增加窗口大小
void OnUpdateViewFullScreen(); //更新“全屏幕显示”菜单的状态

源码

void CMainFrame::OnMenuFullscreen()
{//全屏幕显示的处理函数
RECT rectDesktop;
WINDOWPLACEMENT wpNew;

if (m_bFullScreen)
{//全屏幕显示模式
//隐藏工具条和状态条
m_wndStatusBar.ShowWindow(SW_HIDE);
m_wndToolBar.ShowWindow(SW_HIDE);

//保存正常视图时的窗口位置信息以便恢复原来状态
GetWindowPlacement (&m_wpPrev);
m_wpPrev.length = sizeof m_wpPrev;

//调整RECT为新的窗口尺寸
::GetWindowRect ( ::GetDesktopWindow(), &rectDesktop );
::AdjustWindowRectEx(&rectDesktop, GetStyle(), TRUE, GetExStyle());

//保存RECT以便OnGetMinMaxInfo()使用
m_FullScreenWindowRect = rectDesktop;

wpNew = m_wpPrev;
wpNew.showCmd = SW_SHOWNORMAL;
wpNew.rcNormalPosition = rectDesktop;

//生成新的工具条
m_wndFullScreenBar=new CToolBar;

if(!m_wndFullScreenBar->Create(this, CBRS_SIZE_DYNAMIC|CBRS_FLOATING)
|| !m_wndFullScreenBar->LoadToolBar(IDR_FULLSCREEN))
{
TRACE0("Failed to create toolbar/n");
return; // fail to create
}

//不允许工具条停泊
m_wndFullScreenBar->EnableDocking(FALSE);
m_wndFullScreenBar->SetWindowPos(0,100,100,0,0,SWP_NOSIZE
|SWP_NOZORDER|SWP_NOACTIVATE|SWP_SHOWWINDOW);
m_wndFullScreenBar->SetWindowText(_T("全屏幕显示"));
FloatControlBar(m_wndFullScreenBar, CPoint(100,100));
m_bFullScreen=TRUE;
}
else
{//正常显示模式
//删除全屏幕工具条
m_wndFullScreenBar->DestroyWindow();
delete m_wndFullScreenBar;

m_bFullScreen=FALSE;

//恢复工具条和状态条
m_wndStatusBar.ShowWindow(SW_SHOWNORMAL);
m_wndToolBar.ShowWindow(SW_SHOWNORMAL);
wpNew = m_wpPrev;
}

//设置窗口显示状态
SetWindowPlacement ( &wpNew );
}

void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
{
if (m_bFullScreen)
{
lpMMI->ptMaxSize.y = m_FullScreenWindowRect.Height();
lpMMI->ptMaxTrackSize.y = lpMMI->ptMaxSize.y;
lpMMI->ptMaxSize.x = m_FullScreenWindowRect.Width();
lpMMI->ptMaxTrackSize.x = lpMMI->ptMaxSize.x;
}
}

void CMainFrame::OnUpdateMenuFullscreen(CCmdUI* pCmdUI)
{//更新菜单的状态
pCmdUI->Enable();
pCmdUI->SetCheck(m_bFullScreen);
}

为MFC应用程序添加全屏幕显示功能相关推荐

  1. 向MFC应用程序添加控制台窗口

    简介 如果你曾经写过MFC应用程序,也许你忽略了控制台窗口.熟悉了控制台窗口的人会认为它是如此的便捷,我就是一个,认为printf或者cout是最优秀的调试函数,可以在不打开任务管理器的情况下在控制台 ...

  2. MFC对话框程序添加弹窗进度条提示

    1.建立主对话框和弹窗对话框 2.在主对话框添加按钮,进行主线程工作和弹窗显示. 3.主线程头文件申明线程,主线程工作函数和与弹窗交付的变量 static UINT ThreadProcess(LPV ...

  3. MFC应用程序中添加控制台窗口

    在MFC程序中输出调试信息的方法有两种,一种是使用TRACE宏,可以向Output窗口输出调试信息:另一种是用MessageBox,弹出消息框来输出调试信息,但会影响程序的运行. 其实有一种方法可以更 ...

  4. MFC应用程序中添加控制台窗口---debug输出窗口

    在MFC程序中输出调试信息的方法有两种,一种是使用TRACE宏,可以向Output窗口输出调试信息:另一种是用MessageBox,弹出消息框来输出调试信息,但会影响程序的运行. 其实有一种方法可以更 ...

  5. 基于VTK的MFC应用程序开发(1)

    基于VTK的MFC应用程序开发(1) 分类: VTK应用示例 2013-03-24 22:35 4195人阅读 评论(28) 收藏 举报 CMakeVTKMFC 目录(?)[+] 提到MFC一般都不陌 ...

  6. VS如何新建一个基于对话框的MFC工程并添加按钮

    学习MFC的初学者,入门的步骤很重要,新建一个基于对话框的MFC应用程序,并通过拖拉按钮等,初步搭建自己的MFC工程. 工具/原料 笔记本电脑 VS2010 方法/步骤 打开VS2010,并新建MFC ...

  7. 基于VTK的MFC应用程序开发(3)

    基于VTK的MFC应用程序开发(3) 分类: VTK应用示例 2013-05-17 13:37 3307人阅读 评论(23) 收藏 举报 目录(?)[+] 之前介绍了基于VTK的单文档应用程序开发,并 ...

  8. 基于VTK的MFC应用程序开发(2)

    基于VTK的MFC应用程序开发(2) 分类: VTK应用示例 2013-03-29 13:03 6647人阅读 评论(18) 收藏 举报 MFCVTK图像重采样 目录(?)[+] 现在基于VTK的MF ...

  9. MFC应用程序框架入门

    摘要: 本文主要对VC++ 6.0的MFC编程方法及MFC应用程序框架进行简要介绍. 关键词: VC++6.0:MFC:程序框架 1 MFC概述 顾名思意,MFC应用程序框架是以MFC作为框架基础的, ...

最新文章

  1. RPC简介,及与web service的对比
  2. myeclipse各菜单项说明
  3. IOS基础之iPad的屏幕旋转方向判断
  4. 华为Android10版怎么截屏,安卓手机截图方法 华为手机如何截图 - 云骑士一键重装系统...
  5. 做微信小程序商城需要什么材料?
  6. Java简介:Java是什么?及Java语言的特点
  7. 模型预测控制的缺点_模型预测控制MPC的通俗解释
  8. VS2017安装教程
  9. 将靠父id的层级关系处理成编码形式
  10. Liang-Barsky算法剪裁实例
  11. 找不到移动硬盘解决办法
  12. 阿里云云效平台提交代码
  13. python文献翻译_英文学术文献翻译软件有哪些推荐?
  14. WorkPlus移动办公平台,助力企业随时随地“指尖办公”
  15. 手算梯度下降法,详解神经网络迭代训练过程
  16. Linux的软件包封装格式有,RED HAT LINUX所提供的安装软件包,默认的打包格式为( )。...
  17. Excel获取字体颜色信息的函数操作FgColor函数
  18. clear:both 的作用
  19. GAN-overview reading note(3)Wasserstein GAN
  20. Ubantu18.04系统安装Hexagon SDK教程

热门文章

  1. 2021年中国硬核创业者调研报告
  2. 有4件事,我很后悔~
  3. 互联网日报 | 2月22日 星期一 | 小米回应造车传闻;吉利确认组建全新纯电动汽车公司;沈腾成中国影史首位200亿票房演员...
  4. 面试题,客户经常变更需求该如何处理?
  5. 手机能写python代码_用手机写Python代码!可以随时随地学Python!
  6. 需求分析师的基本功:逻辑思维、逻辑分析与逻辑表达
  7. 作者:张群(1988-),女,博士,中国电子技术标准化研究院设备与数据研究室副主任。...
  8. 【软件质量】软件可维护性
  9. 从 linux内核来看进程与线程的异同
  10. 数学建模及其算法概述