Embedded Excel - изменение стиля окна делает пользовательский интерфейс невосприимчивым
В WPF я встраиваю Excel в свое приложение, используя SetParent, как показано ниже:
HandleRef desktopHwnd = new HandleRef(null, IntPtr.Zero);
HandleRef desktopDC = new HandleRef(null, GetDC(desktopHwnd));
int dpi = GetDeviceCaps(desktopDC, 88); //LOGPIXELSX
ReleaseDC(desktopHwnd, desktopDC);
WindowsFormsHost host = new WindowsFormsHost();
System.Windows.Forms.Panel p = new System.Windows.Forms.Panel();
host.Child = p;
ExcelTab.Content = host;
excel = new Microsoft.Office.Interop.Excel.Application();
excel.Visible = true;
excel.ScreenUpdating = true;
excel.EnableAutoComplete = false;
excel.Workbooks.Open("C:\\test.xlsx");
IntPtr excelHwnd = new IntPtr(excel.Application.Hwnd);
SetParent(excelHwnd, p.Handle);
IntPtr style = GetWindowLongPtr(excelHwnd, GWL_STYLE);
long styleVal = (long)style;
styleVal = styleVal & ~WS_CAPTION;
styleVal = styleVal & ~WS_SYSMENU;
styleVal = styleVal & ~WS_THICKFRAME;
styleVal = styleVal & ~WS_MINIMIZEBOX;
styleVal = styleVal & ~WS_MAXIMIZEBOX;
SetWindowLongA(excelHwnd, GWL_STYLE, styleVal);
MoveWindow(excelHwnd, 0, 0, (int)this.ActualWidth * 96 / dpi, (int)this.ActualHeight * 96 / dpi, true);
Это проблема, когда изначально Excel встраивается нормально, но как только он теряет фокус (например, диалоговое окно в моем приложении открывается и закрывается), внезапно графический интерфейс Excel ведет себя неправильно, и вы не можете щелкнуть ни по одной ячейке.
Если я отключаю строку SetWindowLongA, то Excel работает отлично.
Есть идеи, почему Excel не нравится настраивать строку заголовка?
Спасибо!