一种简单实用的全屏方法
2014-05-02 00:21
211 查看
实现程序全屏幕显示的思路有很多种,最常见的一种就是:
1)利用Windows API提供的一个结构体WINDOWPLACEMENT来存储全屏显示前视图和主框架窗口在屏幕上的位置和显示信息、非客户区窗口的显隐信息,以便全屏幕显示时恢复窗口原状;
2)通过API函数GetDesktopWindow()得到桌面窗口,由GetWindowRect()得到显示器的尺寸;
3)通过AdjustWindowRect()来计算当客户区大小为屏幕大小时相应的窗口大小;
4)通过SetWindowPlacement()来设置视图窗口和主窗口为客户区大小和屏幕大小的窗口;
5)处理窗口消息WM_GETMINMAXINFO,使窗口能够顺利的最大、最小化。
但是用这种方法并没有实现真正的全屏,好像VC6的全屏也是这样做的。如果有多屏显卡,这样实现的全屏是可以
从别的屏幕对其进行放大缩小的。
下面介绍一种简单实用的实现全屏的方法。
1)利用Windows API提供的一个结构体WINDOWPLACEMENT来存储全屏显示前视图和主框架窗口在屏幕上的位置和显示信息、非客户区窗口的显隐信息,以便全屏幕显示时恢复窗口原状;
2)通过API函数GetDesktopWindow()得到桌面窗口,由GetWindowRect()得到显示器的尺寸;
3)通过AdjustWindowRect()来计算当客户区大小为屏幕大小时相应的窗口大小;
4)通过SetWindowPlacement()来设置视图窗口和主窗口为客户区大小和屏幕大小的窗口;
5)处理窗口消息WM_GETMINMAXINFO,使窗口能够顺利的最大、最小化。
但是用这种方法并没有实现真正的全屏,好像VC6的全屏也是这样做的。如果有多屏显卡,这样实现的全屏是可以
从别的屏幕对其进行放大缩小的。
下面介绍一种简单实用的实现全屏的方法。
m_bFullScreen=!m_bFullScreen; // 设置全屏显示标志 //一种更好的全屏显示 LONG style = ::GetWindowLong(this->m_hWnd,GWL_STYLE); if(m_bFullScreen)//全屏显示 { style &= ~(WS_DLGFRAME | WS_THICKFRAME); SetWindowLong(this->m_hWnd,GWL_STYLE, style); this->ShowWindow(SW_SHOWMAXIMIZED); CRect rect; this->GetWindowRect(&rect); ::SetWindowPos(this->m_hWnd,HWND_NOTOPMOST,rect.left-1, rect.top-1, rect.right-rect.left + 3, rect.bottom-rect.top + 3, SWP_FRAMECHANGED); } else { style |= WS_DLGFRAME | WS_THICKFRAME; SetWindowLong(this->m_hWnd, GWL_STYLE, style); this->ShowWindow(SW_NORMAL); } |
相关文章推荐
- 黑马程序员-Oracle(第三讲)
- 时间值
- php2014-4-31的总结
- 初识libjpeg
- Android下生成pdf并显示中文
- 在VC资源文件中加入声音资源
- C++ primer读书笔记(1)
- ios 动画中如何正确响应button的各种事件
- VC++实现位图显示透明效果--实现原理
- 事务管理(二) JDBC事务管理简单实现
- 练习写C++代码(11)--实现简单的时钟类3
- [Redis]windows下redis安装
- linux下源码搭建php环境之mysql(一)
- google glog分析2
- Could not find Class "...\DaoMaster" referenced form method "...\onCreate
- 谓词逻辑
- 三维重建相关参考链接
- LA6276 - Key Insight vector 数组计数
- c++多文件使用全局变量的方法
- POJ3278 Catch That Cow(BFS入门)