=========【更多高级应用请关注公众号】========
===================================
做好的非模态窗体,设置好参数输入后,点击按钮命令后,Rveit没有立刻进入到激活状态,怎么解决呢?,那么出现这种问题的原因是,我们做的非模态窗体在执行相应命令后,窗体并没有关闭或是隐藏,就一直处于激活状态,导致Rveit不能立刻激活或者拿到焦点,解决办法如下:我们可以使用WindowsAPI下的两个函数 GetActiveWindow(),SetActiveWindow(IntPtr hwnd),一个是获得当前系统获得焦点的窗体句柄,一个是设置当前系统某个窗体获得焦点,所以我们在窗体启动时获得这个当前的获得焦点的窗体句柄,这里假设此时Revit没有其他插件窗体占用焦点,那么我们获得的是Revit的句柄,如果想百分之百获得Rveit的窗体句柄的话,使用AdWIndows.dll资源下的方法就可以了,代码如下,只做示范:
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
namespace HelloWorld
{
public partial class Form1 : System.Windows.Forms.Form
{
public Form1()
{
InitializeComponent();
}
[DllImport("user32.dll")]
public static extern IntPtr GetActiveWindow();
[DllImport("user32.dll")]
public static extern IntPtr SetActiveWindow(IntPtr hwnd);
IntPtr active = IntPtr.Zero;
private void Form1_Load(object sender, EventArgs e)
{
// active = GetActiveWindow();
active = Autodesk.Windows.ComponentManager.ApplicationWindow;
}
private void button1_Click(object sender, EventArgs e)
{
SetActiveWindow(active);
}
}
}