看了大家的讨论,受益匪浅! 在VB中经过测试,确实可以把autocad软件窗口作为子窗体显示在VB窗体中,但是在VB.net2005中,每次运行到SetParent(lHwnd, Form1.Handle)时,程序就自动关闭,没有任何提示。逐步调试时,发现前面的那些语句都可以很好的执行。 我的代码如下: AcadApp = GetObject(, "AutoCAD.Application") '此时AutoCad已启动,直接得到 lHwnd = GetParent(GetParent(AcadApp.Activedocument.hwnd)) If lHwnd = 0 Then Exit Sub AcadApp.Visible = False AcadApp.WindowState = 2 lState = AcadApp.WindowState GetWindowRect(lHwnd, r) SetParent(lHwnd, Me.Handle) 'Me.ScaleMode = vbPixels SetWindowPos(lHwnd, 0, 0, 0, Me.Width - 8, Me.Height - 8, 0) AcadApp.Visible = True '使AutoCad可见 acaddoc = AcadApp.Activedocument '设acaddoc为当前图形文件 MyLayer = acaddoc.Layers mospace = acaddoc.ModelSpace '设mospace为当前图形文件的模型空间 那个地方之所以用Me.Handle,是因为在VB.net中窗体已经没有了hwnd属性。 查了很多资料,还是没找到原因,大家一起探讨一下这个问题呵! |