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

VC++
如何有效地使用对话框
一个定制CFileDialog对话框的实例
XP风格复活节彩蛋的实现
程序界面多模式显示的实现
改变视图单调的背景
使窗体拥有透明效果的API
《电子尺》V1.02程序开发实例
美化你的应用程序的外观界面
个人考勤软件开发实例
使用VC6.0实现窗口的任意分割
如何让一个打开的文档成为活动文档
创建非矩形窗口的简单方法
轻松实现类VC界面
视图的缩放的完整论述
如何获得另一个应用程序窗口中的文本
如何发送命令到文档对象
动画窗口的实现-VC++实例一则
如何在其他程序的窗口上创建按钮并使之能响应
如何在基于对话框的程序中动态设置鼠标指针
扩展COleDropTarget类来支持任意窗口拖放 - 作者:王加宝

VC++ 实现全屏


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