在Visual C++中,MDI(Multiple Document Interface)应用程序允许用户在同一窗口中处理多个文档,而活动视图全屏显示则是提升用户体验的一种常见需求。本文将详细介绍如何在VC++6.0环境下,通过编程实现MDI应用程序的活动视图全屏显示。
全屏显示的基本原理是隐藏主菜单、工具栏、状态栏和标题栏,然后调整当前活动视图的大小以填充整个屏幕。在全屏模式下,用户只能看到窗口的客户区,这有助于集中注意力于当前任务,特别是在需要大屏幕展示或无干扰操作的情景下。
实现全屏显示的函数主要包括:
1. `CMDIChildWnd*pChild=MDIGetActiveChild();`:获取当前活动的MDI子窗口(视图)。
2. `m_wndToolBar.ShowWindow(SW_HIDE);`:隐藏工具栏。
3. `m_wndStatusBar.ShowWindow(SW_HIDE);`:隐藏状态栏。
4. `LONG style=::GetWindowLong(m_hWnd, GWL_STYLE);`:获取窗口风格。
5. `style &= ~WS_CAPTION;`:移除标题栏样式。
6. `::SetWindowLong(m_hWnd, GWL_STYLE, style);`:设置新的窗口风格。
7. `ASSERT(m_OrgMenu.GetSafeHmenu() == NULL);`:确保主菜单未被保存。
8. `CMenu*pOldMenu=GetMenu();`:获取当前主菜单。
9. `m_OrgMenu.Attach(pOldMenu->Detach());`:保存主菜单并从窗口中移除。
10. `SetMenu((CMenu*)NULL);`:移除菜单。
11. `int screenx=GetSystemMetrics(SM_CXSCREEN);`:获取屏幕宽度。
12. `int screeny=GetSystemMetrics(SM_CYSCREEN);`:获取屏幕高度。
13. `SetWindowPos(NULL, 0, 0, screenx, screeny, SWP_NOZORDER);`:调整窗口大小和位置,使其充满屏幕。
实现这一功能的具体步骤如下:
1. 使用MFC AppWizard创建一个MDI应用程序框架:
- 打开“File”菜单,选择“New”,启动MFC AppWizard。
- 选择“Projects”栏中的“MFC AppWizard (exe)”项目类型。
- 输入项目名称“FullScreen”,指定项目位置,如"D:\Test",然后点击“OK”。
- 在接下来的向导对话框中,选择多文档应用程序,不提供数据库支持、OLE支持等,按照向导的提示进行选择,直到完成应用程序的创建。
实现全屏显示的源代码可能包含以下关键部分:
```cpp
void CFullScreenApp::OnFullScreen()
{
CMDIChildWnd*pChild = MDIGetActiveChild();
if (pChild)
{
m_wndToolBar.ShowWindow(SW_HIDE);
m_wndStatusBar.ShowWindow(SW_HIDE);
LONG style = ::GetWindowLong(m_hWnd, GWL_STYLE);
style &= ~WS_CAPTION;
::SetWindowLong(m_hWnd, GWL_STYLE, style);
CMenu*pOldMenu = GetMenu();
m_OrgMenu.Attach(pOldMenu->Detach());
SetMenu((CMenu*)NULL);
int screenx = GetSystemMetrics(SM_CXSCREEN);
int screeny = GetSystemMetrics(SM_CYSCREEN);
SetWindowPos(NULL, 0, 0, screenx, screeny, SWP_NOZORDER);
}
}
void CFullScreenApp::OnRestoreView()
{
if (m_OrgMenu.GetSafeHmenu() != NULL)
{
SetMenu(&m_OrgMenu);
m_OrgMenu.Detach();
m_wndToolBar.ShowWindow(SW_SHOW);
m_wndStatusBar.ShowWindow(SW_SHOW);
LONG style = ::GetWindowLong(m_hWnd, GWL_STYLE) | WS_CAPTION;
::SetWindowLong(m_hWnd, GWL_STYLE, style);
// 调整窗口大小以恢复原状
CRect rect;
GetWindowRect(rect);
MoveWindow(rect.left, rect.top, rect.Width(), rect.Height());
}
}
```
在上述代码中,`OnFullScreen`函数用于切换到全屏模式,而`OnRestoreView`函数则用于恢复原始显示状态。你可以将这两个函数绑定到相应的菜单项或快捷键,以便用户可以轻松地在全屏和普通模式之间切换。
通过理解窗口风格和控件的管理,以及MFC提供的API,开发者可以轻松实现MDI应用程序的全屏显示功能。这个功能在许多应用场景中都非常有用,例如在金融系统中展示实时数据、教育软件中的演示模式,或者任何需要最大化用户视野的应用。