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

VC++
自绘按钮补遗
按钮控件的使用
自绘按钮的实现
图形超链接类
VC中多语言菜单的实现
一种漂亮的自绘菜单
CGfxOutBarCtrl之提升篇
颜色选择组合框
如何去掉浮动工具条中的“关闭”按钮
设计XP风格的按钮
实现类似Excel和Visual C++里文件夹式样的标签控制(三)
实现类似Excel和Visual C++里文件夹式样的标签控制(二)
实现类似Excel和Visual C++里文件夹式样的标签控制(一)
CGfxOutBarCtrl之BUG篇
如何实现Office式样的扁平组合框
CButtonST类公共接口函数
CButtonST使用技巧(三)
CButtonST使用技巧(二)
CButtonST使用技巧(一)
CButtonST使用技巧: CButtonST简介

VC++ 实现全屏


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