全屏 
 1   2  CMDIChildWnd* pChild=MDIGetActive();  3  if(!pChild) return;  4  m_bToolBarWasVisible=(m_wndToolBar.IsWindowVisible()!=0);  5  m_wndToolBar.ShowWindow(SW_HIDE);//隐藏工具栏  6  m_bStatusBarWasVisible=(m_wndStatusBar.IsWindowVisible()!=0);  7  m_wndStatusBar.ShowWindow(SW_HIDE);//隐藏状态栏  8   9  // first create the new toolbar 10  // this will contain the full-screen off button 11  m_pwndFullScreenBar=new CToolBar; 12  m_pwndFullScreenBar->Create(this); 13  m_pwndFullScreenBar->LoadToolBar(IDR_FULLSCREEN);//显示退出全屏工具栏 14  m_pwndFullScreenBar->SetBarStyle(m_pwndFullScreenBar->GetBarStyle() | 15   CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC); 16  // to look better: 17  m_pwndFullScreenBar->ModifyStyle(0, TBSTYLE_FLAT); 18  m_pwndFullScreenBar->EnableDocking(0); 19  20  // place the full-screen off button somewhere: 21  CPoint pt(300,200); 22  FloatControlBar(m_pwndFullScreenBar,pt); 23   24  // now save the old positions of the main and child windows 25  GetWindowRect(&m_mainRect); 26  27  // remove the caption of the mainWnd: 28  LONG style=::GetWindowLong(m_hWnd,GWL_STYLE); 29  style&=~WS_CAPTION; 30  ::SetWindowLong(m_hWnd,GWL_STYLE,style); 31  int screenx=GetSystemMetrics(SM_CXSCREEN); 32  int screeny=GetSystemMetrics(SM_CYSCREEN); 33  34  // resize: 35  SetWindowPos(NULL,0,0,screenx,screeny,SWP_NOZORDER); 36  //SetWindowPos(NULL,-5,-5,80,80,SWP_NOZORDER); 37  style=::GetWindowLong(pChild->m_hWnd,GWL_STYLE); 38  m_bChildMax=(style & WS_MAXIMIZE)?true:false; 39  // note here: m_bMainMax is not needed since m_hWnd only 40  // changed its caption  41  ///*************** 42  43  //Save the Original Menu and set menu to NULL 44     ASSERT(m_OrgMenu.GetSafeHmenu()==NULL); 45     CMenu* pOldMenu=GetMenu(); 46     m_OrgMenu.Attach(pOldMenu->Detach()); 47     SetMenu((CMenu*)NULL); 48  49  //************ 50  // and maximize the child window 51  // it will remove its caption, too. 52   //pChild-> 53  this->ShowWindow (SW_SHOWMAXIMIZED); 54  style=::GetWindowLong(pChild->m_hWnd,GWL_STYLE);//获得窗口风格 55  style&=~WS_CAPTION; 56  ::SetWindowLong(pChild->m_hWnd,GWL_STYLE,style);  57  pChild->ShowWindow(SW_SHOWMAXIMIZED); 58  59  //RecalcLayout(); 60   61  62  
退出全屏
  1 ASSERT(m_OrgMenu.GetSafeHmenu()!=NULL);  2     SetMenu(&m_OrgMenu);  3     m_OrgMenu.Detach();  4   5     // You can use SaveBarState() in OnClose(),  6     // so remove the newly added toolbar entirely  7     // in order SaveBarState() not  8     // to save its state. That is why I used dynamic  9     // allocation 10     delete m_pwndFullScreenBar; 11     LONG style=::GetWindowLong(m_hWnd,GWL_STYLE); 12     style|=WS_CAPTION; 13     ::SetWindowLong(m_hWnd,GWL_STYLE,style); 14     if(m_bToolBarWasVisible) 15         m_wndToolBar.ShowWindow(SW_SHOW); 16     if(m_bStatusBarWasVisible) 17         m_wndStatusBar.ShowWindow(SW_SHOW); 18     MoveWindow(&m_mainRect); 19     RecalcLayout(); 20     CMDIChildWnd* pChild=MDIGetActive(); 21  22     style=::GetWindowLong(pChild->m_hWnd,GWL_STYLE); 23     style|=WS_CAPTION; 24     ::SetWindowLong(pChild->m_hWnd,GWL_STYLE,style); 25     // pchild can be NULL if the USER closed all the 26     // childs during Full Screen Mode: 27      if(pChild) { 28         if(m_bChildMax) 29             MDIMaximize(pChild); 30         else MDIRestore(pChild); 31     } 
	 
	
	
 
 
	    
    
 
				
 |