在MFC程序中添加全屏显示功能

2016-01-29 11:53 78 1 收藏

在MFC程序中添加全屏显示功能,在MFC程序中添加全屏显示功能

【 tulaoshi.com - C语言心得技巧 】

在MFC程序中添加全屏显示功能
来源:MSDN 翻译整理:冰点工作室 小鹰

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

下载本文示例源代码

这是工作室为实现全屏显示所发集的一个演示程序。你可以通过选择全屏显示菜单选项时看到相应的效果。这段代码包括两个内容:全屏显示,浮动工具条(用于恢复操作)。

下图便是全屏状态和用于切换的浮动工具条


具体实现步骤:

以下的代码被添加到CmainFrame类中。这里是使用到的四个消息以及他们的简要说明:
1. OnViewFullScreen:全屏显示菜单项的句柄。
2. OnGetMinMaxInfo:捕获 WM_GETMINMAXINFO消息来让你改变窗体大小。
3. IsFullScreen:测试程序是否是以全屏模式显示。
4. OnUpdateViewFullScreen:根据程序模式显示选中或不选中全屏显示菜单项。

主要代码举例:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)
void CMainFrame::OnViewFullScreen() {RECT rectDesktop;    WINDOWPLACEMENT wpNew;    if (!IsFullScreen())    {        // 需要所有状态栏        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());    // 把参数用于 OnGetMinMaxInfo()    m_FullScreenWindowRect = rectDesktop;                wpNew = m_wpPrev;        wpNew.showCmd =  SW_SHOWNORMAL;    wpNew.rcNormalPosition = rectDesktop;            // 创建新的工具栏         m_pwndFullScrnBar=new CToolBar;         if (!m_pwndFullScrnBar->Create(this,CBRS_SIZE_DYNAMIC|CBRS_FLOATING) ||    !m_pwndFullScrnBar->LoadToolBar(IDR_FULLSCREEN))        {        TRACE0("Failed to create toolbarn");    return;      //创建失败        }                 //不允许工具栏停靠         m_pwndFullScrnBar->EnableDocking(0); m_pwndFullScrnBar->SetWindowPos(0, 100,100, 0,0,SWP_NOSIZE|SWP_NOZORDER| SWP_NOACTIVATE|SWP_SHOWWINDOW);    m_pwndFullScrnBar->SetWindowText(_T("Full Screen"));     FloatControlBar(m_pwndFullScrnBar, CPoint(100,100)); m_bFullScreen=TRUE;    }    else    {         m_pwndFullScrnBar->DestroyWindow(); delete m_pwndFullScrnBar;         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 (IsFullScreen())    {        lpMMI->ptMaxSize.y = m_FullScreenWindowRect.Height();    lpMMI->ptMaxTrackSize.y = lpMMI->ptMaxSize.y;    lpMMI->ptMaxSize.x = m_FullScreenWindowRect.Width();    lpMMI->ptMaxTrackSize.x = lpMMI->ptMaxSize.x;    }   }
//测试窗体状态
BOOL CMainFrame::IsFullScreen(){     return m_bFullScreen;}
//是否选中菜单
void CMainFrame::OnUpdateViewFullScreen(CCmdUI* pCmdUI) {pCmdUI->Enable();if (IsFullScreen())pCmdUI->SetCheck();else        pCmdUI->SetCheck(0);}
(全文完)

来源:https://www.tulaoshi.com/n/20160129/1483738.html

延伸阅读
摘要: 本文主要介绍了一种在MFC应用程序中实现起来比较方便的浏览PDF、Word格式文档文件的方法,同时给出了具体的编程步骤和较详细的实现代码。 概述 随着网络技术的迅速发展,越来越多的电子图书资料能够更加方便的从网上被检索、下载。其文件格式也不仅限于HTML格式的Web页,PDF、Word等多种格式也逐渐成为网络资料交换的主...
在MFC中应用CTreeCtrl控件的技巧 作者:阿宽 下载源代码 首先,我们要创建一个基本对话框的MFC工程MFC_TreeCRTL(名字随便给一个)。然后在资源视图中插入两个Dialog,ID分别为IDD_DIALOG11和IDD_DIALOG211,都更改Style属性为Child,Border属性为None,为它们建立两个类,分别命名为Cdialog11和C...
使用 MFC 编写打印程序 作者:戎亚新 南京航空航天大学仿真与控制实验室 下载源代码 摘要 本文首先介绍了利用MFC提供的文档视图框架来实现一个打印程序,实现打印预览,在此基础上,同时通过对MFC源代码的深入探讨,提出了利用该方法在对话框上用MFC实现打印功能,结果表明,利用MFC实现打...
1、将位图加载到内存DC中 2、将内存DC中的内容绘制到要显示位图的DC中 *MFC中没有直接用来加载位图的函数,可以使用WindowsAPI中的 LoadImage函数来加载位图,其原型如下: HANDLE LoadImage( HINSTANCE hinst, //位图实体句柄,若位图在硬盘或者资源文件 //中,则将该参数设为NULL LPCTSTR lpszName, //位图所在路径...
标签: ASP
  用过软件的朋友都知道,进度条是一个优秀软件的重要组成部分。 它的存在能够使用户及时掌握程序的运行进度,确认应用程序正常工作。可是ASP中似乎没有上述标准控件,控制起来也比较麻烦。 那幺如何实现进度条呢? 以下是本人的一些观点(仅供参考)   我们通常在用ASP处理程序(指的是写文件或操作数据库)的时候,会专门用一个页面(*...

经验教程

697

收藏

81
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部