Revit 开发将自己的窗口设置为Revit窗口

在Revit开发中如果使用modeless的对话框,经常容易被Revit窗体覆盖,但是如果将窗体设为Topmost的话,当Revit失去焦点后,它又会遮住其他程序的界面,比如将Revit最小化后,TopMost的窗口没有随着Revit最小化,而是孤零零的显示在屏幕上并且遮挡了其他窗口。其实只需要将Revit的窗体设置为弹出窗体的Ower就可以了,这样也不需要设置topmost。

代码如下:

1 [System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "SetParent")]
2 public extern static IntPtr SetParent(IntPtr childPtr, IntPtr parentPtr);   
3 
4 IntPtr rvtPtr = Process.GetCurrentProcess().MainWindowHandle;
5 SetParent(MyForm.Handle, rvtPtr);

 需要using System.Diagnostics命名空间;

原文地址:https://www.cnblogs.com/laoxia/p/8232414.html