我正面临一个奇怪的问题,我需要你的帮助。我有一个MFC MDI应用程序,并且我试图创建一个WPF窗口作为打开的CView的子项。将一个WPF窗口调整为CView的子窗口
我能够通过在我的CView中处理OnCreate消息并创建WPF窗口来成功完成此操作。我还将CView设置为WPF窗口的父级,因此它的行为与其子级相同。
这里是我所做的:出现预期
int CMyView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
m_windowWrapper.Create(this->GetSafeHwnd());
return 0;
}
void CMyWindowWrapper::Create(HWND hParent)
{
m_myWindow = gcnew MyWindow();
m_myWindow->Show();
IntPtr^ hChildWnd = m_myWindow->GetHwnd();
::SetParent((HWND)hChildWnd->ToPointer(), hParent);
}
public partial class MyWindow : Window
{
public MyWindow()
{
InitializeComponent();
MouseLeftButtonDown += (o, e) => DragMove();
}
public IntPtr GetHwnd()
{
return (new System.Windows.Interop.WindowInteropHelper(this)).Handle;
}
}
WPF窗口。现在,当我尝试调整WPF窗口大小时会发生问题。突然,窗口内的控件被拉伸并重新定位,就好像WPF窗口的新大小是父CView的大小一样!我试图处理SizeChanged事件,发现NewSize比WPF窗口的大小要大得多,并且最可能是包含CView的大小。
我试图删除SetParent调用,并调整大小工作正常。我不知道在调整大小和WPF窗口的父级是CView时会出现什么问题。
我上传说明问题的一个示例应用程序: http://cid-a059807de2e23c43.office.live.com/self.aspx/.Public/ResizeProblem.zip
请帮助我。
谢谢。
我有这个问题两个。我甚至迷上了':: OnSize',它没有正确调整大小。它看起来很糟糕。 – Jordan