| //通过设置SW_HIDE参数隐藏当前的工具条、任务栏 m_bToolBarWasVisible=(m_wndToolBar.IsWindowVisible()!=0); m_wndToolBar.ShowWindow(SW_HIDE); m_bStatusBarWasVisible=(m_wndStatusBar.IsWindowVisible()!=0); m_wndStatusBar.ShowWindow(SW_HIDE); …… //由于在全屏状态下没有系统菜单和工具条,所以需要显示一个浮动的工具条按钮用于//从全屏状态下返回到正常状态。 //首先创建一个工具条对象,并把一个工具条资源装载进来,同时对工具条的风格进行//设置: m_pwndFullScreenBar=new CToolBar; m_pwndFullScreenBar->Create(this); m_pwndFullScreenBar->LoadToolBar(IDR_FULLSCREEN); m_pwndFullScreenBar->SetBarStyle(m_pwndFullScreenBar->GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC); //浮动按钮的效果 m_pwndFullScreenBar->ModifyStyle(0, TBSTYLE_FLAT); m_pwndFullScreenBar->EnableDocking(0); //设置返回到正常状态下的按钮的位置 CPoint pt(300,200); FloatControlBar(m_pwndFullScreenBar,pt); //在放大到满屏前预先保存当前的窗口位置 GetWindowRect(&m_mainRect); //通过改变窗口风格来隐藏标题栏 LONG style=::GetWindowLong(m_hWnd,GWL_STYLE); style&=~WS_CAPTION; ::SetWindowLong(m_hWnd,GWL_STYLE,style); int screenx=GetSystemMetrics(SM_CXSCREEN); int screeny=GetSystemMetrics(SM_CYSCREEN); //重新改变大小: SetWindowPos(NULL,0,0,screenx,screeny,SWP_NOZORDER); style=::GetWindowLong(m_hWnd,GWL_STYLE); m_bChildMax=(style & WS_MAXIMIZE)?true:false; //保存原有的系统菜单,并将当前菜单设置为空 CMenu* pOldMenu=GetMenu(); m_OrgMenu.Attach(pOldMenu->Detach()); SetMenu((CMenu*)NULL); //在其他窗体隐藏好后,将编辑视图放大到满屏 this->ShowWindow (SW_SHOWMAXIMIZED); …… |
| …… //将保存的系统菜单恢复出来 SetMenu(&m_OrgMenu); m_OrgMenu.Detach(); //释放掉在全屏时创建的工具条指针对象,由于是用new创建的,在系统堆中为指针分//配地址空间,在程序退出时不能自动释放,所以必须要用delete显式地进行释放 delete m_pwndFullScreenBar; //把前面剥离出去的WS_CAPTION风格在加入到窗体风格中。 LONG style=::GetWindowLong(m_hWnd,GWL_STYLE); style|=WS_CAPTION; ::SetWindowLong(m_hWnd,GWL_STYLE,style); //显示工具条、任务栏 if(m_bToolBarWasVisible) m_wndToolBar.ShowWindow(SW_SHOW); if(m_bStatusBarWasVisible) m_wndStatusBar.ShowWindow(SW_SHOW); MoveWindow(&m_mainRect); RecalcLayout(); …… |