private void Initialize()
{
if (Handle != null) {
// Already initialized.
return;
}
// When loaded for the first time, build the top-level redirected
// window to host the child window.
WindowParameters windowParams = new WindowParameters();
windowParams.Name = "RedirectedHwndHost";
windowParams.Style = WS.OVERLAPPED | WS.CLIPCHILDREN | WS.CAPTION;
windowParams.ExtendedStyle = WS_EX.LAYERED | WS_EX.NOACTIVATE | WS_EX.TOOLWINDOW | WS_EX.TRANSPARENT;
windowParams.WindowRect = new Int32Rect(0, 0, 500, 500);
_redirectedWindow = _redirectionWindowFactory.CreateWindow(windowParams);
UpdateRedirectedWindowSettings(RedirectionVisibility, false);
// Then create the child window to host.
Handle = BuildWindowCore(_redirectedWindow.Handle);
if (Handle == null || Handle.IsInvalid) {
throw new InvalidOperationException("BuildWindowCore did not return a valid handle.");
}
_redirectedWindow.Show(WindowShowState.Normal, false);
}