问题提出:点击按钮后,图形不出来,必须要用鼠标点击这个CAD窗口后,CAD图形才出来.
分析:CAD这个窗口没有激活.
窗口句柄获得方法 oHand = oCad.AcadApi
请问:各位大侠的问题是:不用鼠标---激活这个CAD程序.在fomr运行cad程序如下.
Function AcadApi()
  On Error Resume Next
  Set AcadApp = GetObject(, "AutoCAD.Application.16")
  If Err Then
    Err.Clear
    Set AcadApp = CreateObject("AutoCAD.Application.16")
  End If
  AcadApp.Visible = True
  Dim objEntity As Object
  lHwnd = GetParent(GetParent(AcadApp.ActiveDocument.hwnd))
  If lHwnd = 0 Then Exit Function
    lState = AcadApp.WindowState
    AcadApp.WindowState = 1 '设置ACAD的窗口状态为默认,用于保存窗口位置。
    GetWindowRect lHwnd, r
    SetParent lHwnd, Form1.hwnd
    Form1.ScaleMode = vbPixels '将VB窗体默认的缇单位改为以像素为单位。
    SetWindowPos lHwnd, 0, 245, 0, 770, 700, 0
    AcadApi = lHwnd    
End Function

解决方案 »

  1.   

    试了以下程序如何组合后,没成功.在窗体的Load事件中加入下面的代码: 
    Private Sub Form_Load() 
    Dim erg As Long 
    注释:让windows知道你想要的热键。 
    erg& = SendMessage(Me.hwnd, WM_SETHOTKEY,HK_ALTZ, 0) 
    注释:检查函数是否执行成功 
    If erg& <> 1 Then 
    MsgBox "You need another hotkey", vbOKOnly,"Error" 
    End If 
    注释:告诉windows热键按下后做什么--显示窗口 
    erg& = DefWindowProc(Me.hwnd, WM_SHOWWINDOW,0, 0) End Sub 
      

  2.   

    我看你的代码中好像有把AUTOCAD的窗口作为你的Form1的子窗口,是吧.
    没看到你有写单独激活CAD窗口的语句啊.