1

現在、既存のレガシー プロジェクトを移行中です。ここでは、C++/CLI をビジネス ロジック (ネイティブ C++) とインターフェイス (WPF) の間のブリッジとして使用します。出発点として、Win32 ウィンドウで WPF コンテンツをホストする方法に関するこのMSDN の記事に従いました。ただし、この問題に頭を悩ませることはできません。ホストウィンドウのサイズを変更するたびに...

  • 重大な遅延が発生しており、ウィンドウの再描画がゆっくりと進んでいます。
  • これにより、デスクトップ ウィンドウ マネージャー (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);
...
}

これ本当にばかげているに違いありません。

4

0 に答える 0