nonsmall 发表于 2009-6-9 10:53:00

[原创] 利用VB做可视化DCL思路简析

本帖最后由 作者 于 2009-6-22 11:20:53 编辑 <br /><br /> <p>首先大家可以自己到网上找一个绿色的VB6 才几MB而已</p><p>打开VB6默认新建EXE就行 打开即可</p><p>这时就有一个窗体(对话框)了</p><p>左面是窗体的控件区 拖到界面上就行</p><p>(操作很简单 如果你还没有用过VB 目前VB教程书店和网上大把可以自己看看)</p><p>右面是修改属性的 对DCL来讲主要是一个"名称"(LISP里面的key) 一个caption (LISP里面的Label)</p><p>高度(Height) 宽度(width) X坐标 (left) Y坐标 (Top) 这几个自己可以拖动</p><p>我们先放置一个commandbutton (就是Button) 然后在右上方工程窗口右键点击Form1 (Form1)</p><p>保存Form1.frm</p><p>之后用记事本打开这个Form1.frm代码如下</p><p>VERSION 5.00<br/>Begin VB.Form Form1 <br/>&nbsp;&nbsp; Caption&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; "Form1"<br/>&nbsp;&nbsp; ClientHeight&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 3195<br/>&nbsp;&nbsp; ClientLeft&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 60<br/>&nbsp;&nbsp; ClientTop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 345<br/>&nbsp;&nbsp; ClientWidth&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 4680<br/>&nbsp;&nbsp; LinkTopic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; "Form1"<br/>&nbsp;&nbsp; ScaleHeight&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 3195<br/>&nbsp;&nbsp; ScaleWidth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 4680<br/>&nbsp;&nbsp; StartUpPosition =&nbsp;&nbsp; 3&nbsp; '窗口缺省<br/>&nbsp;&nbsp; Begin VB.CommandButton <font color="#ff0000">Command1 </font><br/><font color="#ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Caption&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; "Command1"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Height&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 615<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Left&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 1560<br/><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TabIndex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 0</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Top&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 1320<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 1815</font><br/>&nbsp;&nbsp; End<br/>End<br/>Attribute VB_Name = "Form1"<br/>Attribute VB_GlobalNameSpace = False<br/>Attribute VB_Creatable = False<br/>Attribute VB_PredeclaredId = True<br/>Attribute VB_Exposed = False</p><p>这样我们可以用Lisp对这个代码进行分析 每个Begin-End之间就是一个控件</p><p>另外VB6控件的高宽对应DCL有个比值</p><p>注意DCL中需要 Row 和 Column 这里要做循环嵌套和递归判定</p><p>只要排序得当 一个Visual DCL就能够诞生了.(这样工作量大大减少 几天就可做个样子出来)</p><p>我做的VISUAL DCL效果可以到这里查看:http://nonsmall.ys168.com/</p><p>前一个图是VB做窗体 后一个图是自动生成的DCL</p><p></p><p></p><p>部分源码(源码也是源码生成的....汗):</p><p>完整生成的自动化源码:</p><p>&nbsp;自动组合DCL LSP</p><p></p><p>拆分的:</p><p></p>

vladimirputin 发表于 2017-11-6 14:06:34

利用VB做对话框确实是一个很不错的建议,谢谢分享啊。

pengfei2010 发表于 2017-11-3 09:02:57

回帖是一种美德!感谢楼主的无私分享 谢谢

nonsmall 发表于 2009-6-9 12:27:00

nonsmall 发表于 2009-6-9 12:52:00

<p>上面的图是VB 下面的图是自动生成的DCL效果</p><p></p><p>DCL对应代码:</p>

雪山飞狐_lzh 发表于 2009-6-9 13:12:00

<p>这样做不是太复杂了?</p><p>VB画窗体-&gt;转换为DCL-&gt;再写Lisp代码?</p><p>最后一步发现窗体有问题又重做?</p><p>而且动用三种程序(VB/Vlisp/nonsmall)</p>

nonsmall 发表于 2009-6-9 14:32:00

lzh741206发表于2009-6-9 13:12:00static/image/common/back.gif这样做不是太复杂了?VB画窗体-&gt;转换为DCL-&gt;再写Lisp代码?最后一步发现窗体有问题又重做?而且动用三种程序(VB/Vlisp/nonsmall)

<p>VB画窗体 : 很简单</p><p>转换为DCL : 程序全自动(这个转换程序就是用纯Lisp写一段 调用DCL前执行一下就行)</p><p>写Lisp代码 : 平时正常写</p><p>有问题 : 调整VB里面的窗体 , DCL对应即时改变 , 为什么要重做?</p><p>动用程序 : VB(只是拖一拖出来个对话框样子) vlisp (本来就是为了写Lisp么)</p>

liminnet 发表于 2009-6-9 15:48:00

liminnet 发表于 2009-6-9 15:52:00

liminnet 发表于 2009-6-9 16:01:00

nonsmall 发表于 2009-6-9 17:17:00

liminnet发表于2009-6-9 16:01:00static/image/common/back.gifNONS 做成VB后,你的转成DCL的程序在那呀,

<p>看你这么积极主动很有兴趣的样子</p><p>你也尝试写这样一个转换程序吧</p><p>先从一个控件 两个控件写一写 能学到很多知识!</p>

liminnet 发表于 2009-6-9 17:27:00

页: [1] 2 3 4 5
查看完整版本: [原创] 利用VB做可视化DCL思路简析