调整包含WPF的Win32的性能问题

时间:2013-05-04 18:45:57

标签: .net wpf winapi interop c++-cli

我正在迁移现有的遗留项目。目前我们希望使用C ++ / CLI作为业务逻辑(本机C ++)和接口(WPF)之间的桥梁。我按照MSDN article关于如何在Win32窗口中托管WPF内容作为起点。但是,我无法解决这个问题:每当我调整主机窗口的大小......

  • 严重延误,窗口重新缓慢。
  • 它导致桌面窗口管理器(dwm.exe)内存使用量急剧增加(调整大小几秒钟后为2 GB)

我将代码剥离到最低限度。一个简单的红色WPF页面和一个几乎没有变化的普通Win32项目:

namespace ManagedCode {
    using namespace System;
    using namespace System::Windows::Interop;

    void Create(HWND parent) {
        HwndSource^ container = gcnew HwndSource(NULL, WS_CHILD | WS_VISIBLE, NULL,
            0, 0, 100, 100, "WPFCONTENT", IntPtr(parent));
        Managed::WpfPage^ page = gcnew Managed::WpfPage();
        container->RootVisual = page;
    }
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
...
    case WM_CREATE:
        ManagedCode::Create(hWnd);
...
}

这个 是非常愚蠢的。

0 个答案:

没有答案