我正在迁移现有的遗留项目。目前我们希望使用C ++ / CLI作为业务逻辑(本机C ++)和接口(WPF)之间的桥梁。我按照MSDN article关于如何在Win32窗口中托管WPF内容作为起点。但是,我无法解决这个问题:每当我调整主机窗口的大小......
我将代码剥离到最低限度。一个简单的红色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);
...
}
这个 是非常愚蠢的。