WEB开发网
开发学院软件开发VC 程序界面多模式显示的实现 阅读

程序界面多模式显示的实现

 2008-01-19 20:25:07 来源:WEB开发网   
核心提示:void CMainFrame::ViewMode(int nViewType){CRect ClientRect;CRect WindowRect;CRect ToolbarRect;CRect StatusbarRect;//获取窗体、客户区及工具条大小WindowRect = m_WindowRect;Clien
void CMainFrame::ViewMode(int nViewType)
{
  CRect ClientRect;
  CRect WindowRect;
  CRect ToolbarRect;
  CRect StatusbarRect;
  //获取窗体、客户区及工具条大小
  WindowRect = m_WindowRect;
  ClientRect = m_ClientRect;
  m_wndToolBar.GetWindowRect(&ToolbarRect);
  //获取边框及标题栏大小
  int borderHeight = GetSystemMetrics(SM_CYBORDER);
  int captionHeight = GetSystemMetrics(SM_CYCAPTION);
  //获取状态条大小
  CStatusBar* pStatus = (CStatusBar*) AfxGetApp()->m_pMainWnd->GetDescendantWindow(AFX_IDW_STATUS_BAR);
  pStatus->GetWindowRect(&StatusbarRect);
  //停靠工具条
  DockControlBar(&m_wndToolBar);  
  int CompactCx;        //新窗体宽
  int CompactCy;        //新窗体高
  //以多种模式显示
  switch(nViewType)
  {
  case 0:                  //正常显示模式
    {
      //显示菜单
      if ( hMenu != NULL )  
        ::SetMenu( m_hWnd, hMenu );
      
      //显示状态条
      pStatus->ShowWindow(SW_SHOW);
      //新窗体宽、高
      CompactCx=WindowRect.Width();
      CompactCy=WindowRect.Height();
    }
    break;
  case 1:          //简洁显示模式
    {
      //显示菜单
      if ( hMenu != NULL )  
        ::SetMenu( m_hWnd, hMenu );
      
      //隐藏状态条
      pStatus->ShowWindow(SW_HIDE);
      
      //新窗体宽、高
      CompactCx=WindowRect.Width();
      CompactCy=WindowRect.Height() - ClientRect.Height() + ToolbarRect.Height() - borderHeight;
    }
    break;
  case 2:          //精简显示模式
    {
      //隐藏菜单
      hMenu = ::GetMenu(m_hWnd);  
        ::SetMenu( m_hWnd, NULL );
      
      //隐藏状态条
      pStatus->ShowWindow(SW_HIDE);
      
      //新窗体宽、高
      CompactCx=WindowRect.Width();
      CompactCy=captionHeight + ToolbarRect.Height() + borderHeight*2;
    }
    break;
  }
  //设置新窗体显示
  SetWindowPos( &wndTop, WindowRect.left, WindowRect.top, CompactCx, CompactCy, SWP_SHOWWINDOW); 
}

以上部分代码具体实现的细节问题,可在下载实例代码后,仔细查看源码既可(内有详细注释)。

联系方式:

地址:陕西省西安市劳动路2号院六单元

邮编:710082

作者EMAIL:jingzhou_xu@163.net

未来工作室(Future Studio)

上一页  1 2 

Tags:程序 界面 模式

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接