MDI 示例:演示不使用文档/视图结构的 MDI
更新:2007 年 11 月
MDI 示例使用 MFC 的多文档界面 (MDI) 支持但不使用文档/视图结构。
有关其他 MDI 示例,请参见 MDIDOCVW。
MDI 还阐释 Microsoft Windows 计时器、CColorDialog、CBitmap 以及如何更改窗口的默认光标。
安全说明: |
---|
提供该示例代码是为了阐释一个概念,并不代表着最安全的编码实践,因此不应在应用程序或网站中使用该示例代码。对于超出本示例代码的预期用途以外的使用所造成的偶然或继发性损失,Microsoft 不承担任何责任。 |
获取示例和安装示例的说明:
在 Visual Studio 的“帮助”菜单上,单击“示例”。
有关更多信息,请参见定位示例文件。
示例的最新版本和完整列表可以从 Visual Studio 2008 Samples page(Visual Studio 2008 示例页面)联机获取。
还可以在计算机的硬盘上查找示例。默认情况下,示例和自述文件将复制到 \Program Files\Visual Studio 9.0\Samples\ 下的文件夹中。对于 Visual Studio 速成版,所有示例都位于联机位置。
生成并运行示例
生成并运行 MDI 示例
打开解决方案 mdi.sln。
在“生成”菜单中单击“生成”。
在“调试”菜单中,单击“开始执行(不调试)”。
MDI 示例应用程序提供一个父窗口,它包含两个不同类型的 MDI 子窗口:一个是“Bounce”窗口,该窗口中有一个跳动的球;另一个是“Hello”窗口,该窗口显示文本“Hello, World!”。可以为每种窗口类型创建多个实例。
单击“File”菜单上的“New Bounce”或“New Hello”以创建新的 MDI 子窗口。两个 MDI 子窗口确定在它们活动时显示什么菜单。两个窗口都有“Color”菜单。从此菜单中选择颜色时,跳动的球或 Hello 文本的颜色会更新。选择“Custom”项以调用颜色对话框,从中可以选择特殊的颜色。
“Bounce”窗口还有一个“Speed”菜单,从中可以选择球在屏幕上移动的速度。
如果最小化“Bounce”窗口,注意没有静态图标,而是有一个小球在图标中跳动。相反,“Hello”窗口具有普通图标。
不带文档和视图的 MDI
与应用程序向导产生的 MDI 应用程序不同,此示例应用程序不使用框架的文档和视图支持。因此,它不使用文档模板;应用程序的 InitInstance 不调用 AddDocTemplate。
然而,此应用程序充分利用了框架的 MDI 支持。CMainFrame 从 CMDIFrameWnd 派生。CBounceWnd 和 CHelloWnd 从 CMDIChildWnd 派生。“窗口”菜单上的命令(如平铺)由框架在 CMDIFrameWnd 中的默认实现处理。
尽管 CBounceWnd 和 CHelloWnd 都重写 Create,但该重写对于利用框架的 MDI 支持不是必需的。Create 重写阐释了如何更改窗口的默认光标和图标。更改窗口的默认光标或图标需要注册新的 WNDCLASS,方法是调用 AFXRegisterWndClass 并在 Create 调用中传递 WNDCLASS 的名称。
关键字
此示例说明以下关键字:
AfxGetInstanceHandle;AfxRegisterWndClass;CBitmap::CreateCompatibleBitmap;CCmdUI::SetCheck;CColorDialog::DoModal;CColorDialog::GetColor;CDC::BitBlt;CDC::CreateCompatibleDC;CDC::DeleteDC;CDC::DrawText;CDC::Ellipse;CDC::FillRect;CDC::GetDeviceCaps;CDC::SelectObject;CDC::SetBkColor;CDC::SetTextColor;CFrameWnd::LoadFrame;CFrameWnd::rectDefault;CGdiObject::DeleteObject;CMDIChildWnd::Create;CMenu::LoadMenu;CWinApp::InitInstance;CWnd::DestroyWindow;CWnd::GetClientRect;CWnd::GetCurrentMessage;CWnd::GetDC;CWnd::Invalidate;CWnd::KillTimer;CWnd::MessageBox;CWnd::OnCreate;CWnd::OnPaint;CWnd::OnSize;CWnd::OnTimer;CWnd::ReleaseDC;CWnd::SetTimer;CWnd::ShowWindow;CWnd::UpdateWindow;GetSysColor;LOWORD;LoadCursor;LoadIcon;MAKEINTRESOURCE;RGB;max;min
说明: |
---|
某些示例(如此示例)尚未经过修改以反映 Visual C++ 向导、库和编译器中所做的更改,但仍演示了如何完成所需的任务。 |