当前位置: 首页 > 图文教程 > 开发语言 > VC++ > 在MFC程序中添加全屏显示功能

VC++
VC++ 的常用编程技巧
VC++编译环境详解
Visual C++制作一个Sniffer实例
vc.net中实现启动画面来个淡入淡出效果
VC++中进程间相互通信的十一种方法
深入了解VC++编译器
VC++删除浮动工具条中“关闭”按钮
VISUAL C++中的OCX控件的使用方法
VC++:用VC++实现上网拨号功能
VC++:基于VC++中ATL创建ActiveX控件的探讨
VC++删除浮动工具条中“关闭”按钮
VC++:VC++中的面向对象和Windows编程
VC++:Vc++中线程的同步
VC++:更新命令用户接口(UI)消息
VC++:CDatabase类的那些事
VC++:小编谈VC++中 CDatabase类的那些事
VC++:小编泛谈MFC的ODBC类
VC++:小编分享线程的创建和终止
在VC资源文件中加入声音资源
C++的static关键字

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 61 ::
收藏到网摘: n/a

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

下载本文示例源代码

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

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


具体实现步骤:

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

主要代码举例:

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 toolbar\n"); 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);}
(全文完)