現在、既存のレガシー プロジェクトを移行中です。ここでは、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);
...
}
これは本当にばかげているに違いありません。