我正面臨一個奇怪的問題,我需要你的幫助。我有一個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