明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1645|回复: 3

VB窗体只能收起,不准关闭

[复制链接]
发表于 2012-3-28 10:00:13 | 显示全部楼层 |阅读模式
      Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = 0 Then
        Cancel = True
        If Me.Height > 50 Then
            Me.Height = 10
            If ThisDrawing.Application.WindowState = acNorm Then ThisDrawing.Application.WindowLeft = 0
        Else
            Me.Height = 192
            If ThisDrawing.Application.WindowState = acNorm Then ThisDrawing.Application.WindowLeft = 0
        End If
    End If
End Sub



    以上代码可使窗体只能收起,不准关闭

      在VBA中测试通过,但用VB封装DLL后运行不了

       怎样改成DLL中可用呢??, 谢谢!!
 楼主| 发表于 2012-3-28 11:55:58 | 显示全部楼层
   先自己顶起,各位好汉帮指点啊
 楼主| 发表于 2012-4-4 13:31:12 | 显示全部楼层
  看来各位大都挺忙的
 楼主| 发表于 2012-4-7 16:57:06 | 显示全部楼层
    在论坛中搜到一贴,与各位分享

http://www.mjtd.com/Develop/ArticleShow.asp?ArticleID=798

VBA和VB应用程序之异同和相互移植

Microsoft VBA是一个面向对象的编程环境。它提供了与Visual Basic (VB)相似的丰富的开发能力。VBA和VB的最主要的区别在于VBA运行在与AutoCAD相同的处理空间,从而提供了一个具有AutoCAD智能的,非常快的编程环境。

VBA同时也提供与其它有VBA编程能力的应用程序的应用集成。这意味着AutoCAD利用其它应用程序的对象库可以控制其它应用程序,例如Microsoft Word和Excel。

VB是一个独立的开发版本,必须单独购买,但是它为AutoCAD VBA提供了许多附加的组件,象外部数据库引擎和报告输出能力等。

执行AutoCAD VBA有四点好处:

Visual Basic编程环境易学易用;
VBA运行在与AutoCAD相同的处理空间。使程序执行速度非常快。
对话框构建快速,高效。允许开发者快速地定制程序原形和收到设计的及时反馈。
工程可以单独存在,亦可嵌入在图形中。这就给了开发者在发行他们的应用程序时极大的灵活性。
要想用VB改写VBA的示例代码,你必须首先引用AutoCAD类型库。在VB里,从工程选单中选择引用选项激发引用对话框。从引用对话框,选择AutoCAD 版本15然后击OK。
下一步,在示例代码中用用户定义的指向当前活动文档的专门变量替代所有对ThisDrawing的引用。为了达到这个目的,定义一个AutoCAD应用程序的变量(acadApp)和一个当前文档的变量(acadDoc)。然后,设置应用程序变量(acadApp)为当前AutoCAD应用程序。

如果AutoCAD正在运行,GetObject方法就提取出AutoCAD应用程序对象。如果AutoCAD没有正在运行,一个错误就会发生,VB程序就应该捕捉并且清除它。CreateObject方法然后试图生成一个AutoCAD应用程序对象。如果成功,AutoCAD就启动;如果失败,一个显示错误描述的信息框就会出现。

下面的代码示例演示了VB如何连接到AutoCAD并且如何用Clear和Description属性处理错误信息变量Err。如果你的编程环境不支持这些属性,你需要适当地修改示例。

示例一:从Visual Basic 连接到AutoCAD


Sub ConnectToAcad()
Dim acadApp As AcadApplication
On Error Resume Next
Set acadApp = GetObject(, "AutoCAD.Application")
If Err Then
Err.Clear
Set acadApp = CreateObject("AutoCAD.Application")
If Err Then
MsgBox Err.Description
Exit Sub
End If
End If
MsgBox "Now running " + acadApp.Name + _
" version " + acadApp.Version
End Sub

下一步,设置文档变量为AutoCAD应用程序的文档对象。文档对象从应用程序对象的ActiveDocument属性返回。
 

示例二:获取AutoCAD文挡对象
 

Dim acadDoc as AcadDocument
Set acadDoc = acadApp.ActiveDocument
 

从这里开始,就可以使用acadDoc变量来引用当前的AutoCAD图形。

注意:当运行多个AutoCAD例程时,GetObject方法将返回在Windows运行对象表中的第一个AutoCAD例程。关于运行对象表(ROT)和GetObject方法请参看Microsoft Visual Basic相应文档。


示例三:VBA和VB代码对照


用VBA生成一条线

Sub AddLineVBA()
' This example adds a line
' in model space
Dim lineObj As AcadLine
Dim startPoint(0 To 2) As Double
Dim endPoint(0 To 2) As Double
' Define the start and end
' points for the line
startPoint(0) = 1
startPoint(1) = 1
startPoint(2) = 0
endPoint(0) = 5
endPoint(1) = 5
endPoint(2) = 0

' Create the line in model space
Set lineObj = ThisDrawing. _
ModelSpace.AddLine _
(startPoint, endPoint)

' Zoom in on the newly created line
ZoomAll
End Sub
 

用VB生成一条线

Sub AddLineVB()
On Error Resume Next
' Connect to the AutoCAD application
Dim acadApp As AcadApplication
Set acadApp = GetObject _
(, "AutoCAD.Application")
If Err Then
Err.Clear
Set acadApp = CreateObject _
("AutoCAD.Application")
If Err Then
MsgBox Err.Description
Exit Sub
End If
End If

' Connect to the AutoCAD drawing
Dim acadDoc As AcadDocument

Set acadDoc = acadApp.ActiveDocument
' Establish the endpoints of the line
Dim lineObj As AcadLine
Dim startPoint(0 To 2) As Double
Dim endPoint(0 To 2) As Double
startPoint(0) = 1
startPoint(1) = 1
startPoint(2) = 0
endPoint(0) = 5
endPoint(1) = 5
endPoint(2) = 0
' Create a Line object in model space
Set lineObj = acadDoc.ModelSpace.AddLine _
(startPoint, endPoint)
ZoomAll
End Sub


您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 16:25 , Processed in 0.161158 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表