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 не нравится настраивать строку заголовка?

Спасибо!

0 ответов

Другие вопросы по тегам