当前位置: 首页 > 图文教程 > 开发语言 > VC++ > VC++ 实现全屏

VC++
C++类对象的拷贝构造函数
使用MFC的数组类
指针专题
精通VC与MATLAB联合编程:综合举例二
C 程序的外部变量与函数
MFC 编写的仿 Windows 计算器
static_cast揭密
事件编程(二)
事件编程(一)
精通 VC 与 MATLAB 联合编程:综合举例一
.c文件和.h文件的概念与联系
过马路,左右看
google 竞赛题 SecretSum 的 C++ 解法
如何实现快捷方式中的查找目标功能
几个 Windows 到 Linux 的代码移植问题
打造自定义的 AfxMessageBox
精通VC与MATLAB联合编程:编译器的使用
禁用屏幕拷贝(Print Screen),调用派生的析构函数及其它......
基于表达式计算的科学计算器
轻松实现DES算法查看器

VC++ 实现全屏


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

今天我在网上看到了实现全屏的文法,但实践起来有一定的问题。于是我加以修改,写成了一个函数,其思想来自网上。
函数如下:
void FullScan()
{
     static bool isfull=true;
     static CRect m_OldWndRect;
     static CMenu m_OrgMenu;
     if(isfull==true)
     {
          GetWindowRect(&m_OldWndRect);//得到原窗口位置
          //隐藏工具栏和状态栏
          if(m_wndToolBar.IsWindowVisible())
          {
               m_wndToolBar.ShowWindow(SW_HIDE);
          }
          if(m_wndStatusBar.IsWindowVisible())
          {
               m_wndStatusBar.ShowWindow(SW_HIDE);
          }
          //隐藏菜单栏
          CMenu* pOldMenu=GetMenu();
          m_OrgMenu.Attach(pOldMenu->Detach());
          SetMenu((CMenu*)NULL);
          //隐藏标题栏
          LONG style=::GetWindowLong(m_hWnd,GWL_STYLE);
          style&=~WS_CAPTION;
          ::SetWindowLong(m_hWnd,GWL_STYLE,style);
          //窗体最前
          ::SetWindowPos(AfxGetMainWnd()->m_hWnd,HWND_TOPMOST,-1,-1,-1,-                              1,SWP_NOMOVE|SWP_NOSIZE);
             //全屏
          ShowWindow(SW_SHOWMAXIMIZED);
          RecalcLayout();//重绘框架
          isfull=false;
     }
     else
     {
          //显示工具栏和状态栏
          m_wndToolBar.ShowWindow(SW_SHOW);
          m_wndStatusBar.ShowWindow(SW_SHOW);
          //显示菜单栏
          SetMenu(&m_OrgMenu);
          m_OrgMenu.Detach();
          //显示标题栏
          LONG style=::GetWindowLong(m_hWnd,GWL_STYLE);
          style|=WS_CAPTION;
          ::SetWindowLong(m_hWnd,GWL_STYLE,style);
          //取消窗体最前
          ::SetWindowPos(AfxGetMainWnd(),                                                           m_hWnd,HWND_NOTOPMOST,m_OldWndRect.left,m_OldWndRect.top,
           m_OldWndRect.right-m_OldWndRect.left,m_OldWndRect.bottom-m_OldWndRect.top,SWP_SHOWWINDOW);
          //恢复
          ShowWindow(SW_SHOWNOACTIVATE);
          MoveWindow(m_OldWndRect);
          RecalcLayout();//重绘框架
          isfull=true;
         }
         return 0;
}
这个函数第一次调用时实现全屏,第二次调用是恢复原来的状态。