入门指南

快速集成-MFC

在 Visual Studio 里从零创建一个多文档 MFC 程序,把 TSE 三维视口嵌入到 CView 中, 并完成引擎启动、视口缩放与运行时 DLL 部署。

  • 开发环境Visual Studio · MFC
  • 平台Windows x64
  • 语言C++
集成完成后运行程序出现的 TSE 3D 视口界面
完成后的效果:TSE 三维视口已嵌入 MFC 视图,并随窗口尺寸自适应

创建一个默认的多文档 MFC 程序

按照 VS 默认配置生成一个多个文档的 MFC 程序

MFC 应用程序向导:应用程序类型选择「多个文档」

尝试运行一下这个项目,效果如下

默认生成的多文档 MFC 程序运行效果

编辑库目录填入 sdk 库目录

在 VC++ 目录的库目录中填入 SDK 的 lib 路径

编辑头文件目录填入 sdk 头文件目录

在 VC++ 目录的包含目录中填入 SDK 的 include 路径

编辑附加依赖项增加 sdk lib 库

  • 增加 flow_bridge_platform.dll.lib
  • 增加 flow_bridge_adaptor_hwnd.lib
在链接器附加依赖项中加入 SDK 的 lib 文件

在 MFC 代码中引入 tse.hpp 文件

  • 定义 ENABLE_ENGINE_HWND_ADAPTOR 以开启 HWND UI 适配器
  • 包含 hpp/tse.hpp 文件以获取 SDK 功能接口
在 simple_mfcView.cpp 中定义 ENABLE_ENGINE_HWND_ADAPTOR 并包含 tse.hpp

在成员函数中放置一个 m_hwnd 成员变量标识引擎窗口

在视图类中声明 HWND m_hwnd 成员变量

在 CView 中添加 OnInitialUpdate 方法

在视图类头文件中添加 OnInitialUpdate 方法声明

在 OnInitialUpdate 函数中填入以下代码以启动引擎,创建窗口句柄

simple_mfcView.cpp
void CsimplemfcView::OnInitialUpdate()
{
    CView::OnInitialUpdate();

    // 设置许可证,在这里写入许可证
    tse::EngineSingleton::instance().set_license_key("00-A1111111-G2222222-K3333333-B4444444");

    // 启动引擎
    tse::EngineSingleton::instance().startup_sync();

    // 创建 UI 句柄
    m_hwnd = tse::EngineSingleton::instance().create_hwnd_widget();
    // 绑定父窗口
    ::SetParent(m_hwnd, GetSafeHwnd());

    // 显示引擎视图
    ::ShowWindow(m_hwnd, SW_SHOW);
}

在 CView 中绑定 WM_SIZE 消息

在消息映射中加入 ON_WM_SIZE

在 CView 中添加一个 OnSize 函数处理引擎视口缩放

在视图类中声明 OnSize 函数

在 OnSize 函数中填入如下代码以处理引擎视口缩放

simple_mfcView.cpp
void CsimplemfcView::OnSize(UINT nType, int cx, int cy)
{
    CView::OnSize(nType, cx, cy); // 先调用基类

    // 安全过滤:最小化或尺寸无效时直接返回
    if (nType == SIZE_MINIMIZED || cx <= 0 || cy <= 0)
        return;

    m_hwnd; // 引擎窗口句柄

    // 检查目标子窗口是否有效)
    if (m_hwnd && ::IsWindow(m_hwnd))
    {
        // 使用新的 cx, cy 调整子窗口大小,使其填满客户区
        ::SetWindowPos(m_hwnd, nullptr, 0, 0, cx, cy,
            SWP_NOZORDER | SWP_NOACTIVATE);
    }
}

将 SDK 对应的 DLL 复制到 mfc 可执行文件的目录下

把 SDK bin 目录下的 DLL 复制到可执行文件目录

运行程序即可出现 3D 界面

运行后出现的 TSE 3D 视口界面