[原创] Vlisp 交互 VB 窗体
本帖最后由 nonsmall 于 2013-5-13 10:54 编辑 <br /><br /><p>题目:Vlisp交互VB窗体</p><p>前言:在ACAD里面使用VB方面的知识很多,在此就不多述了。</p><p> 我尽量用最简单、不必修改的VB代码,剩下的都是Lisp的事情。</p><p>概述:本文将讨论如何通过Vlisp对VB窗体进行操作。</p><p> 实现非模态VB窗体向Vlisp提供数据绘制图形。</p><p>原理:Vlisp通过ActiveX操作VB窗体对象</p><p>说明:测试成功于AutoCAD 2004 2007 2008,2006似乎只能在调试时好用……</p><p>步骤:安装一套企业版的VB6,</p><p>{新建一个工程}-{ActiveX DLL}</p><p>在右侧修改工程名和类名,把代码复制进去,添加一个窗体,窗体上放置2个文本框</p><p>{文件}-{生成*****DLL}</p><p></p><p>VB代码(一共就6行)如下:</p><p> </p><p>Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long<br/>Public Function ShowWnd(ByVal ACADhWnd As Long) As Object<br/> Form1.Show 0<br/> SetParent Form1.hWnd, ACADhWnd<br/> Set ShowWnd = Form1<br/>End Function</p><p></p><p>然后就是Lisp的事情了</p><p></p><p> </p> (setq frm (Vlax-Invoke-Method nonsmall 'ShowWnd (Vlax-Get ACAD 'HWND )))程序一到这句话就卡死了 VB 代码 <p>呵呵,买了两个明经币啊!</p> jxphklibin发表于2009-9-29 10:16:00static/image/common/back.gif呵呵,买了两个明经币啊!<p>学到知识,花银子值啊!</p> 下载学习学习 <p>在线看图不大清楚</p><p>可以另存到本地查看。</p><p>关于VB窗体的属性,</p><p>可以参考MSDN或VBA帮助。</p> <p>好东东 花钱也值</p> <p>学习了,讲的很好呀,谢谢了</p> 讲的很好呀, <p>我在LISP里使用 (startapp "VB程序的路径和程序") 调用VB的程序,只调用一个时没问题,当连续调用两个时,第二个调用的程序不等第一个运行完就开始运行了,怎么才能控制一个运行完第二个再启动呢</p><p>程序大致结构如下:</p><p>(defun c:test()</p><p> (startapp APP1) (startapp APP2))</p><p></p>