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

VC++
泛型编程-转移构造函数(Generic Programming: Move Constructor)
C++中的废料收集
C语言中trim的实现
使非MFC窗口程序的窗口回调过程成为C++类的成员函数
可用于数论计算的无符号大整数类
基于位操作的类CBitBuffer
What are you, Anyway?
《新加坡程序员考题一则及分析》的讨论
关于拷贝构造函数和赋值运算符
简单模板概念
析构函数的奥秘
从软件工程的角度看const的用法
泛型编程:再现Min和Max
Tuples
运用设计模式设计MIME编码类
const传奇
使用namespace的正确方法
新加坡程序员考题一则及分析
在C++中实现属性
深入分析MFC中的CArray类

VC++ 实现全屏


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 316 ::
收藏到网摘: 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;
}
这个函数第一次调用时实现全屏,第二次调用是恢复原来的状态。