Я пытаюсь показать форму WPF как всплывающее в VSTO Excel, и всплывающее окно должно быть в том же положении и размере, что и родительский Excel. Я пробую приведенный ниже код, но по некоторым причинам я не получаю фактическую позицию. Может ли кто-нибудь помочь здесь
Обновление - приведенный ниже код работает нормально, если моя шкала разрешения экрана составляет 100%. Если он не равен 100%, я не получаю точную позицию
[DllImport("user32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetWindowRect(IntPtr hWnd, ref RECT lpRect);
[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
public int Left;
public int Top;
public int Right;
public int Bottom;
}
About about = new About();
RECT r = new RECT();
if (GetWindowRect((IntPtr)Globals.ThisAddIn.Application.ActiveWindow.Hwnd, ref r))
{
about.Top = r.Top;
about.Left = r.Left;
}
var helper = new System.Windows.Interop.WindowInteropHelper(about);
helper.Owner = (System.IntPtr)Globals.ThisAddIn.Application.Hwnd;
about.ShowDialog();