明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 7841|回复: 12

[VBA]用vba做的窗体如何才能cad的窗体切换激活?

  [复制链接]
发表于 2004-4-23 23:51:00 | 显示全部楼层 |阅读模式
简单的说就是能像“特性”窗体那样能与cad窗体切换作为活动窗体,而无需关闭。比如某一窗体打开并运行时还能画图。


试了vbmodal,不行。
发表于 2004-4-23 23:56:00 | 显示全部楼层
frm.Show 0
 楼主| 发表于 2004-4-24 00:04:00 | 显示全部楼层
没这么简单,呵呵。


如果窗体无模式显示,当我想对窗体操作比如写数据时很困难,因为窗体得不到焦点。
发表于 2004-4-24 13:43:00 | 显示全部楼层
做两个按钮让用户自己切换 Private Sub CommandButton1_Click()
Me.Hide
Me.Show 1
End Sub
Private Sub CommandButton2_Click()
Me.Hide
Me.Show 0
End Sub
发表于 2004-4-27 22:31:00 | 显示全部楼层
可以利用鼠标的位置来确定是否切换显示模式,但要求鼠标的移动速度不能太快,以下是窗体的代码部分,试试看:
  1. Dim i As Boolean
  2. Private Sub CommandButton1_Click()
  3.        Me.Hide
  4. End Sub Private Sub UserForm_Initialize()
  5.        i = True
  6. End Sub
  7. Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  8. 'Debug.Print X & "," & Y
  9. If (X < 5 Or Y < 5 Or X > Me.Width - 15 Or Y > Me.Height - 25) Then
  10.        If i = True Then
  11.                i = False
  12.                Me.StartUpPosition = 3
  13.                Me.Hide
  14.                Me.Show 0
  15.        End If
  16. Else
  17.        If i = False Then
  18.                i = True
  19.                Me.StartUpPosition = 3
  20.                Me.Hide
  21.                Me.Show 1
  22.        End If
  23. End If
  24. End Sub
 楼主| 发表于 2004-5-11 19:00:00 | 显示全部楼层
谢谢斑竹!!太感激了!


       


BTW:我觉得startupposition没有用的说
发表于 2004-5-12 09:26:00 | 显示全部楼层
AUTOCAD 自带一个AcFocusCtrl控件,只要将其放在窗体上.然后form.show 0就能实现无模式显示.不需要编程!~

评分

参与人数 1威望 +1 金钱 +10 贡献 +5 激情 +5 收起 理由
mccad + 1 + 10 + 5 + 5 【精华】好文章

查看全部评分

发表于 2004-5-12 11:04:00 | 显示全部楼层
补充一点:当窗体无模式显示时,需要点击autocad一下才能进行画图等操作.我们可以利用api函数来实现.Declare Function SetFocusAPI&amp; Lib "user32" Alias "SetFocus" (ByVal hwnd As Long)
发表于 2004-12-27 09:22:00 | 显示全部楼层
本帖最后由 作者 于 2004-12-27 9:52:44 编辑

czbming发表于2004-5-12 11:04:00补充一点:当窗体无模式显示时,需要点击autocad一下才能进行画图等操作.我们可以利用api函数来实现.Declare Function SetFocusAPI& Lib \"user32\" Alias \"SetF...

请问具体怎么操作啊。我对api不熟。 我已经试出来了: 在模块下加入: Declare Function SetFocusAPI& Lib "user32" Alias "SetFocus" (ByVal hwnd As Long) 在窗体的MouseMove事件下加入: Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
SetFocusAPI ThisDrawing.hwnd
End Sub
发表于 2005-1-3 20:23:00 | 显示全部楼层
使用AcFocusCtrl控件有时会导致AutoCAD异常退出…
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-28 07:40 , Processed in 0.193082 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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