1.5 多文档MFC应用程序实例

单文档应用程序每次只能打开一个文档窗口(例如Windows自带的“记事本”程序),而多文档应用程序允许同时打开多个文档进行编辑,并且在编辑这些文档时,各文档之间互不影响(例如Visual C++ 6.0的源代码编辑器)。

1.5.1 技术要点:

  • 多文档应用程序和单文档应用程序类似,依然支持“文档/视图”结构,以做到数据与界面的分离;
  • 多文档应用程序在打开多个文档时,每个时刻只能有一个文档处于活动状态,活动的视图窗口将覆盖非活动窗口。通过菜单和工具栏所发出的指令,通常只对当前活动文档有效;
  • 多文档中的每个子窗口都可以最大化和最小化,但不同于普通窗口的最大化和最小化,多文档子窗口的最大化和最小化只在其父窗口中进行,在最大化时,子窗口占据主窗口的整个客户区;在最小化时,子窗口在主窗口中缩小为标题栏显示;

1.5.2 实例步骤:
本实例以一个简单的多文档文本编辑器为例,演示在Visual C++ 6.0中创建多文档应用程序的基本方法,实例步骤如下:

  1. 打开Visual C++ 6.0,单击“File”/“New”菜单。在弹出的对话框中选择项目类型为“MFC AppWizard(exe)”,在“项目名称”文本框中输入“MfcMdi”,单击“OK”/“确认”按钮进入应用程序向导界面;
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将CEF3集成到MFC文档应用程序中,可以按照以下步骤进行操作: 1. 在Visual Studio中创建一个MFC文档应用程序项目。 2. 下载CEF3库并解压缩到项目文件夹中。 3. 将CEF3库的头文件路径添加到项目属性中的“C/C++” -> “常规” -> “附加包含目录”中。 4. 将CEF3库的库文件路径添加到项目属性中的“链接器” -> “常规” -> “附加库目录”中。 5. 在项目属性中的“链接器” -> “输入” -> “附加依赖项”中添加以下依赖项: libcef.lib libcef_dll_wrapper.lib libcef_dll.lib 6. 在MFC文档应用程序的主窗口类中,添加一个成员变量CefRefPtr<CefBrowser> m_browser; 用于保存浏览器实例。 7. 在主窗口类的OnCreate()函数中添加以下代码: CefMainArgs main_args(GetModuleHandle(NULL)); CefSettings settings; CefRefPtr<CefApp> app(new MyApp); CefInitialize(main_args, settings, app.get(), NULL); RECT rect; GetClientRect(&rect); CefBrowserSettings browser_settings; m_browser = CefBrowserHost::CreateBrowserSync(this->GetSafeHwnd(), browser_settings, CefString("about:blank"), CefBrowserHost::kFlagNone, NULL, NULL); m_browser->GetHost()->SetSize(PET_VIEW_WIDTH, PET_VIEW_HEIGHT); m_browser->GetHost()->WasResized(); 8. 在主窗口类的OnDestroy()函数中添加以下代码: m_browser->GetHost()->CloseBrowser(true); m_browser = NULL; CefShutdown(); 9. 在MyApp类中实现以下函数: virtual void OnBeforeCommandLineProcessing(const CefString& process_type, CefRefPtr<CefCommandLine> command_line) OVERRIDE { command_line->AppendSwitch("--disable-gpu"); command_line->AppendSwitch("--disable-gpu-compositing"); command_line->AppendSwitch("--disable-software-rasterizer"); } 10. 在MFC文档应用程序文档类中添加一个成员变量CefRefPtr<CefBrowser> m_browser; 用于保存浏览器实例。 11. 在文档类的OnInitialUpdate()函数中添加以下代码: CRect rect; GetClientRect(&rect); CefBrowserSettings browser_settings; m_browser = CefBrowserHost::CreateBrowserSync(this->GetSafeHwnd(), browser_settings, CefString("about:blank"), CefBrowserHost::kFlagNone, NULL, NULL); m_browser->GetHost()->SetSize(rect.Width(), rect.Height()); m_browser->GetHost()->WasResized(); 12. 在文档类的OnCloseDocument()函数中添加以下代码: m_browser->GetHost()->CloseBrowser(true); m_browser = NULL; 13. 在文档类的OnSize()函数中添加以下代码: if (m_browser && m_browser->GetHost()) { CRect rect; GetClientRect(&rect); m_browser->GetHost()->SetSize(rect.Width(), rect.Height()); m_browser->GetHost()->WasResized(); } 现在,您就可以在MFC文档应用程序中显示多个CEF3浏览器实例了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值