|
|
|
Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long<br>Public Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long<br>Public Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long<br>Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long<br>Public Type RECT<br>Left As Long<br>Top As Long<br>Right As Long<br>Bottom As Long<br>End Type<br>Public AcadApp As Object<br>Public lHwnd As Long '保存ACAD应用程序的窗口句柄<br>Public lState As Long '保存ACAD的初始窗口状态<br>Public r As RECT '保存ACAD的初始窗口位置<br>Public L As Long<br>Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long<br>Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long<br>Public Const GWL_STYLE = (-16)<br>Public Const WS_CAPTION = &HC00000<br> <br>Private Sub Form_Load()<br>On Error Resume Next<br>Set AcadApp = GetObject(, "AutoCAD.Application")<br>If Err Then<br>Err.Clear<br>Set AcadApp = CreateObject("AutoCAD.Application")<br>End If<br>lHwnd = GetParent(GetParent(AcadApp.Activedocument.hwnd))<br>If lHwnd = 0 Then Exit Sub<br>lState = AcadApp.WindowState<br>AcadApp.WindowState = 1 '设置ACAD的窗口状态为默认,用于保存窗口位置<br>'GetWindowRect lHwnd, r<br>SetParent lHwnd, Form1.hwnd<br>Form1.ScaleMode = vbPixels '将VB窗体默认的缇单位改为以像素为单位<br>SetWindowPos lHwnd, 0, Form1.ScaleLeft, Form1.ScaleTop, Form1.ScaleWidth - 0, Form1.ScaleHeight - 0, 0<br>Me.WindowState = 2<br>AcadApp.WindowState = 0<br>GetWindowRect lHwnd, r<br> <br>L = GetWindowLong(lHwnd, GWL_STYLE)<br>L = L And Not (WS_CAPTION)<br>L = SetWindowLong(lHwnd, GWL_STYLE, L)<br>'以上三句:隐藏CAD标题栏,最上面是VB窗体标题栏,下面是ACAD的菜单和工具栏<br>'L = GetWindowLong(acadhwnd, GWL_STYLE)<br>'L = L Or (WS_CAPTION)<br>'L = SetWindowLong(acadhwnd, GWL_STYLE, L)<br>'以上三句:恢复CAD标题栏<br>End Sub<br>Private Sub Form_Resize()<br>SetWindowPos lHwnd, 0, Form1.ScaleLeft, Form1.ScaleTop, Form1.ScaleWidth - 0, Form1.ScaleHeight - 0, 0<br>End Sub<br>Private Sub Form_Unload(Cancel As Integer)<br>If lHwnd = 0 Then Exit Sub<br>SetParent lHwnd, 0<br>SetWindowPos lHwnd, 0, r.Left, r.Top, r.Right - r.Left, r.Bottom - r.Top, 0<br>AcadApp.WindowState = lState<br>AcadApp.Quit<br>Set AcadApp = Nothing<br>End Sub<br> |
|