gpt4 book ai didi

c# - 使用 SetParent() 时问题定位窗口

转载 作者:行者123 更新时间:2023-11-30 13:24:31 28 4
gpt4 key购买 nike

我正在尝试通过 PInvoke 使用 SetParent API 将 childForm 设置为主 Excel 窗口的子窗口:

Form childForm = new MyForm();
IntPtr excelHandle = (IntPtr) excelApplication.Hwnd;
SetParent(childForm.Handle, excelHandle);
childForm.StartPosition = FormStartPosition.Manual;
childForm.Left = 0;
childForm.Top = 0;

正如您在上面看到的,我的意图也是将子项定位在 Excel 窗口的左上角。然而,出于某种原因,childForm 总是在某个奇怪的位置结束。

我做错了什么?

最佳答案

虽然这里的所有答案都提出了完全合乎逻辑的方法,但没有一个对我有用。然后我尝试了 MoveWindow。出于某种我不明白的原因,它完成了工作。

代码如下:

[DllImport("user32.dll", SetLastError = true)]
internal static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);

...

Form childForm = new MyForm();
IntPtr excelHandle = (IntPtr) excelApplication.Hwnd;
SetParent(childForm.Handle, excelHandle);
MoveWindow(childForm.Handle, 0, 0, childForm.Width, childForm.Height, true);

关于c# - 使用 SetParent() 时问题定位窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4124025/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com