波涛置业楼盘:如何窗口1能够出现在窗体2中?

来源:百度文库 编辑:偶看新闻 时间:2024/05/10 22:29:09
  • Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
  • Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
  • Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
  • Private 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
  • Private Type RECT
  •     Left As Long
  •     Top As Long
  •     Right As Long
  •     Bottom As Long
  • End Type
  • Private acadApp As Object 
  • Private lHwnd As Long '保存ACAD应用程序的窗口句柄
  • Private lState As Long '保存ACAD的初始窗口状态
  • Private r As RECT '保存ACAD的初始窗口位置
  • Private Sub Form_Load()
  •     
  •     On Error GoTo ErrTrap
  •     Set acadApp = GetObject(, "AutoCAD.Application")
  •     acadApp.Visible = True
  •     lHwnd = GetParent(GetParent(acadApp.Activedocument.hwnd))
  •     If lHwnd = 0 Then Exit Sub
  •     lState = acadApp.WindowState
  •     acadApp.WindowState = 1 '设置ACAD的窗口状态为默认,用于保存窗口位置。
  •     GetWindowRect lHwnd, r
  •     SetParent lHwnd, Form1.hwnd
  •     Form1.ScaleMode = vbPixels '将VB窗体默认的缇单位改为以像素为单位。
  •     SetWindowPos lHwnd, 0, Form1.ScaleLeft, Form1.ScaleTop, Form1.ScaleWidth, Form1.ScaleHeight, 0
  •     Exit Sub
  •     
  • ErrTrap:
  •     On Error GoTo 0
  • End Sub
  • Private Sub Form_Resize()
  •     SetWindowPos lHwnd, 0, Form1.ScaleLeft, Form1.ScaleTop, Form1.ScaleWidth, Form1.ScaleHeight, 0
  • End Sub
  • Private Sub Form_Unload(Cancel As Integer)
  •     If lHwnd = 0 Then Exit Sub
  •     SetParent lHwnd, 0
  •     SetWindowPos lHwnd, 0, r.Left, r.Top, r.Right - r.Left, r.Bottom - r.Top, 0
  •     acadApp.WindowState = lState
  •     Set acadApp = Nothing
  • End Sub

    版主:学习以上的帖子,我已能将CAD窗体加入到VB窗体中,但不知为什么不能隐去CAD的标题栏,
    请指正!谢谢
    源代码: Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
    Public Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
    Public Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
    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
    Public Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
    End Type
    Public AcadApp As Object
    Public lHwnd As Long '保存ACAD应用程序的窗口句柄
    Public lState As Long '保存ACAD的初始窗口状态
    Public r As RECT '保存ACAD的初始窗口位置
    Public L As Long Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
    Public Const GWL_STYLE = (-16)
    Public Const WS_CAPTION = &HC00000 Private Sub Form_Load()
    On Error Resume Next
    Set AcadApp = GetObject(, "AutoCAD.Application")
    If Err Then
    Err.Clear
    Set AcadApp = CreateObject("AutoCAD.Application")
    End If
    lHwnd = GetParent(GetParent(AcadApp.Activedocument.hwnd))
    If lHwnd = 0 Then Exit Sub
    lState = AcadApp.WindowState
    AcadApp.WindowState = 1 '设置ACAD的窗口状态为默认,用于保存窗口位置。
    'GetWindowRect lHwnd, r
    SetParent lHwnd, Form1.hwnd
    Form1.ScaleMode = vbPixels '将VB窗体默认的缇单位改为以像素为单位。
    SetWindowPos lHwnd, 0, Form1.ScaleLeft, Form1.ScaleTop, Form1.ScaleWidth - 0, Form1.ScaleHeight - 0, 0
    Me.WindowState = 2
    AcadApp.WindowState = 0
    GetWindowRect lHwnd, r L = GetWindowLong(lHwnd, GWL_STYLE)
    L = L And Not (WS_CAPTION)
    L = SetWindowLong(lHwnd, GWL_STYLE, L)
    End Sub Private Sub Form_Resize()
    SetWindowPos lHwnd, 0, Form1.ScaleLeft, Form1.ScaleTop, Form1.ScaleWidth - 0, Form1.ScaleHeight - 0, 0
    End Sub Private Sub Form_Unload(Cancel As Integer)
    If lHwnd = 0 Then Exit Sub
    SetParent lHwnd, 0
    SetWindowPos lHwnd, 0, r.Left, r.Top, r.Right - r.Left, r.Bottom - r.Top, 0
    AcadApp.WindowState = lState
    AcadApp.Quit
    Set AcadApp = Nothing
    End Sub

    L = GetWindowLong(lHwnd, GWL_STYLE)
    L = L And Not (WS_CAPTION)
    L = SetWindowLong(lHwnd, GWL_STYLE, L)
    这个就是隐藏标题栏的,现在最上面的是VB窗体的标题栏,下面的是ACAD的菜单和工具栏。

  • 如何在程序中判断窗体当前的状态(是否为活动窗口)? 如何在程序中判断窗体当前是否为活动窗口? 如何在窗体中控制FLASH控件的大小随着窗口的大小而改变代码 vb中如何是窗体一运行就是最大化窗口 在ACESS窗体中插入一个子窗体,如何在主窗体中对子窗体进行筛选? 在窗体中如何添加MSComm控件 在VB中如何分割窗体? (高分) 如何在Access中插入子窗体? 如何在word中创建窗体文档! 求助:Access中如何使子窗体在拖入主窗体后达到1对1的效果,而不是把子窗体中的所有数据都显示出来? C#中,怎么实现在第一个窗体上点一个按钮,出现第二个窗体 请问哪位编程高手能够告诉我怎样在Access窗体中某字段刚一进入新记录就自动出现默认值,并且还能编辑。 vb.net中在其它窗体中如何关闭指定的窗体 ACCESS中如何在创建窗体的查询窗体中包含卖出统计、存货统计? ASPNET中如何在Page_Load中让窗体关闭? vb里在窗体中嵌入窗体 在vb.net中,如何在一个窗体上打开另一个窗体? 电脑点击一下,出现一个窗口,如何只在一个窗口中运行,怎么设置? 在vb中如何将一个窗体的文本框的值传给另一个窗体文本框 请问C#如何在一个类或一个窗体中使用用另一个窗体的控件? 如何在word文档中给“窗体”的锁加密? VB如何在菜单中打开一个新的窗体 如何在C#窗体中插入分隔线? 如何在access窗体中显示图片ole字段?