本帖最后由 fengyishen 于 2023-5-26 01:02 编辑
一、为什么写这篇博客? 1、本人有着易语言五年编写经验,大大小小写过项目几千个,算是对自己历程的1个小结。 2、经常从各种渠道看到反复的提问,通过分享经验让新手快速上手,壮大火山圈子,加速火山生态发展。 3、以自己的理解提出对火山代码的说明,让大家参与进来,共同讨论,共同提升。 二、火山视窗项目管理结构 1、结构层级关系 易语言:.e 源码 > 程序集(资源、类模块、数据类型、DLL声明等) > 代码 。 火山视窗:解决方案 > .vprj 项目 > .v 文件或 .wsv 文件(文本明文) > 代码。 2、解决方案 1)、 可以看到上面对应关系层级中,火山多了个解决方案。 好处 火山可以在1个窗口里管理多个源码,当你项目有多个EXE、多个DLL时,可以同时编写,可以一键编译多个源码,可以一键打开项目中用到多个源码 (因为所有源码在同1个解决方案中,不用担心哪个源码忘记放在哪里了)。 易语言则需要在窗口来回切换,挨个编译。 学习成本 多了一些编译、调试的操作,比如调试运行时,不按打开的源码运行,而是按设置为 活动项目 的源码运行等。 提示:火山编译与调试会自动保存,调试没有停止时,可以对源码进行修改但不会实时生效。 3、.e 源码 与 .vprj 项目 用过火山的小伙伴会发现,易语言的所有程序集在同1个源码中。火山的 .v文件或 .wsv文件则是独立的文件(默认在src文件夹中)。 好处 多个项目可以用同1份 .v 文件或 .wsv文件。比如,你写了一份通信加密算法在 C .v 。A 项目与 B 项目可以引用同1份 C .v 进行编译与调试。下次想更新算法时,只需要修改其中1个项目的 C .v 即可。 学习成本 易语言插入程序集,随便插入都不会乱。火山新建 .v 文件 的路径相对活动项目,.v 文件引用相对于解决方案选择的任意项目。 比如,如果你在所有项目都折叠起来的解决方案中选择了 A 项目,活动项目为 B 项目,这时你点击菜单 文件 > 新建 > 文件,此时文件放在 B 项目相对目录 src 文件夹中,在 A 项目中引用了此文件。 你会发现,你找不到刚才的新建的 .v 文件了。[滑稽] 火山的窗口、静态方法(易语言子程序)、类(易语言类模块)、文本资源、图片资源、常量、自定义数据类型(易语言叫法)、DLL声明(易语言叫法)等 更改 为表格属性中设置,可以在任意 .v 文件或 .wsv文件中编写。 4、程序集等子类别 与 .v 文件或 .wsv 文件 当你在实践上面 3 中学习成本一项时,也许发现了1个问题。易语言可以插入程序集、类模块、子程序、窗口等。火山却只能插入 .v 文件。 ??? 因为火山的这些可以在任意 .v 文件中声明。在表格属性中设置对应的属性即可。
1)、易语言程序集:在火山类的表格中设置属性 @全局类 为 真 时。此类中的所有 静态方法 则可以像易语言程序集中的子程序一样调用。
2)、易语言子程序:在火山方法的表格中勾选 静态 时,此方法则可以像易语言子程序一样调用。参考上例的图示。
3)、易语言窗口:在火山类的表格中设置 基础类 为 窗口 时,则此类可以像易语言窗口一样设计组件,调用 取窗口句柄()等方法。 提示:图示中 @视窗.布局 在按快捷键 Ctrl + U 或 打开右键菜单选择 设计某某某的界面布局 打开 窗口设计器 后,在窗口设计器中点击 确定 后会自动生成。窗口设计器 只能在光标处于 基础类 为 窗口 或 父类 为 窗口 时(如何查看父类是什么在后面会讲)才能调用。
4)、易语言数据类型:在火山类中定义成员变量后,将成员公开,即可像易语言数据类型一样调用。 有时对于内嵌代码需要设置属性 @视窗.结构类 ,此时就相当于易语言在下图中所示。类型的成员S才是自定义数据类型。提供给封装用户进阶用法,不深入讨论。
5)、易语言全局变量:在火山类的表格属性设置 @全局类 为 真 ,将成员变量勾选公开和静态。即可像易语言全局变量一样调用。此时变量不再是线程安全,且变量数据不会自动释放。
6)、易语言DLL声明:在火山中可以直接调用C++的文件,很灵活!所以我们可以像C++代码一样引用头文件,直接内嵌代码调用,如果有 lib 的话,记得引用上 lib 。 我们可以不用任何声明调用绝大部分系统API和常量,因为基本模块中已经引用。比如MFC基本类,程序动态类等。 也可以像易语言一样用表格声明,非基本类型需要传递指针。比如下图中的文本型。文本型、字节集类等在火山不属于基本类型。
7)、易语言常量、图片资源、声明资源等:在火山类的表格属性设置 @全局类 为 真 ,将成员变量勾选公开。声明常量即可像易语言一样调用。 提示:某些情况需要使用非正常资源时,可以用 文件资源到字节集 转换到字节集后使用。可以定义成 字节集类 在 @视窗.值文件 里设置。
8)、易语言类模块:在火山中没有设置任何属性,即可像易语言类模块一样调用。 相对于易语言简陋的类模块,火山增加了以下几点: # 勾选公开属性后,在子类引用输入字母时会弹出提示。易语言中虽然能调用,但输入字母时不会弹出提示框,需要自己输入完整名称。 # 成员变量公开后,在其它地方引用此类实例化的变量时,可以直接访问。 # 方法属性中新增 属性读 和 属性写 ,可以封装方法来读写类中数据。
发现了吗?火山是非常灵活的,这只是一个简单的示例。 还有类指针的调用,回调方法等也不再需要 汇编 或 置入代码 来实现。使用内嵌C++代码即可。 非封装用户用不到,这里就不深入讨论了!
你问我火山是个什么东西? 易语言写得了的代码,火山能写。 易语言写不了代码,火山也能写。 吴总出品,必属精品!这就是火山!
本来还想讲讲变量作用域、变量类型、火山使用技巧,比如搜索,帮助文档使用等等这些,整理了一下发现要讲很久,篇幅关系,写太长影响观感。下次有机会再讲吧~
|