关键代码实现: 我做了一个涵数,本示例程序只需调用此涵数便可实现。其中当nViewType传值为0时,为正常显示模式、传值为1时,为简洁显示模式、传值为2时,为精简显示模式。 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) |
正在阅读:程序界面多模式显示的实现程序界面多模式显示的实现
2004-02-14 09:34
出处:PConline
责任编辑:zwg
键盘也能翻页,试试“← →”键