- 博客(50)
- 资源 (2)
- 收藏
- 关注
原创 FB的一些小技巧(持续更新)
1、FB默认会初始化数据,如果不初始化数据,可以在 = 后加any。数组初始化用{},类的初始化用()变量直接redim非常简单,如。2、redim多层类里的数据。3、数组与类的初始化。
2024-07-09 08:31:57
225
原创 使用FreeBASIC设计8051单片机汇编编译器
FB里使用Main函数需要自己定义入口点,并使用__FB_ARGC__和__FB_ARGV__来获取参数。ParseAsmFile来解析ASM文件到机器码。CompileToHex将机器码转换为Hex文件。基本原理就是通过分析汇编文件然后转换为机器码。以下是51汇编与机器码对应的表格(数据来自网络,如果发现有误请联系QQ1493446087修正。所以就可以开始分析汇编文件,然后根据以上表格转换对应的机器码。2、另外建立一个调用编译器的窗体工程。,好奇下,试着用FB写了一下。看到有人用C++语言实现。
2024-01-13 16:05:51
1208
1
原创 FB混合C语言编译
用-include 指定你需要包含的C文件,后面是文件名(我是放在编译路径下,VFB的release文件下),这里有BubbleSort.c和SelectSort.c。如果是使用VFB来编译程序,则需要在内核模块的程序起始块里来设置,这里设置的代码会放到所有代码的最前部,这是我们需要的。5.3、C里的数组在FB里需要声明指针,不能使用FB的数组直接声明(FB的数组是一个类型结构,与C的数组有区别。5.2、一般来说,C里的返回值是void的,FB里使用sub,不是void的,使用function。
2023-12-25 10:45:49
633
原创 FB使用SkinSharp皮肤
它是收费的(好像只有32位)。现在移植到FB来,这里提供一个例程。(这里只做技术研究,如需商用,请合法购买)1、使用clsSkinH类就可以调用皮肤了。2、其他方法请参考clsSkinH类的具体定义。以前在VB中有一款很好用的皮肤控件,叫。3、实现效果:(中国红)
2023-12-22 15:23:22
421
原创 FB使用通用链表
2、声明后,使用时需要在始模块页里模板添定义:使用MListTemplate来包含你需要的数据。1、文件名为CommonList.bi,使用时可以将文件放在工程的modules文件夹内。然后在VFB起始模块页里添加头文件包含声明:#include Once "../modules/list.bi"使用时,需要用【TLIST + 数据类型】作为链表的数据类型,使用【TLISTNODE + 数据类型】来作为节点的数据类型。FB论坛上有人分享了通用链表代码,略做修改整合,并添加使用例子。好了,看看具体例子吧。
2023-12-22 14:48:51
356
原创 FB制作DLL给VB使用
3、数值类型可以直接给VB使用,而字符串使用时,需要注意,VB的字符串是BSTR,所以需要转换类型,输入数据可以使用zstring ptr指针,而输出时需要转BSTR,同时要使用SysAllocString来分配内存。2、如果需要给VB或其他语言直接调用,则需要加上Extern "Windows-MS" ... End Extern,否则生成的函数末尾会有@4,@8等后缀。FB制作DLL非常方便,这里做一个FB生成DLL给VB调用的例子。1、需要导出的函数,要在末尾加Export,不加找不到入口点。
2023-12-15 08:50:14
436
原创 FB内嵌汇编探索3
汇编很容易实现子函数的调用,那么FB是不是也可以通过汇编实现函数内部的子函数呢?通过试验发现只要增加3条汇编指令(3个单行asm)就能够实现。在使用字符串时,发现除了用lea指令加载字符串,或者直接对字符串指针进行mov,还有一种就是用offset来取字符串指针。六、函数里调用子函数。
2023-04-15 11:09:49
145
原创 FB使用入口点函数例子
FB是把代码转成C(GCC编译)或者汇编(GAS编译)后编译的,本身就有一个main函数,所以在程序里其实不需要入口点,直接写就可以顺序执行,而有的小伙伴编译DLL时,想使用DLL入口点函数的参数。如果有需要线程启动和终止消息的,则需要使用这种模式的入口,需要自己复制代码实现,主要原理是通过参数命令-Wl -e增加一个入口点函数_DLLENTRY (在VFB附加编译选项中输入命令:-Wl -e_DLLENTRY,如果使用1.09.0的编译器,也可以使用 #cmdline来设置编译参数)。
2023-04-03 12:22:30
415
原创 FreeBASIC语言实现屏幕放大功能
FreeBASIC语言实现的IDE是VisualFreeBASIC。 屏幕放大的核心函数就是BitBlt和StretchBlt。 实现效果如图: 源码地址:https://github.com/rainheart311/VisualFreeBASIC/tree/master/ZoomWindow
2020-11-20 08:33:37
382
原创 VisualFreeBASIC基础——树视图控件的使用
一、属性1、Name(名称) 和窗口一样,Name属性是树视图类的实例化,我们可以用【名称.属性/方法】来使用树视图控件。2、LinesRoot(根连接线) 该属性可以设置根节点是否有一个连接线。3、Check(复选框) 该属性可以设置树视图控件节点的复选框。4、Enabled(可用)、Visible(显示) 使能和显示树视图控件。5、C...
2020-04-10 13:21:05
911
原创 FreeBASIC调用qsort排序
FreeBASIC可以很方便的调用C函数库,试着调用了快速排序qsort函数,还是有些需要注意的地方,记录一下。一、qsort介绍(参考百度和CSDN博客) qsort是在C函数库(stdlib.bi)里实现的快速排序函数,是根据二分法写的,其时间复杂度为n*log(n)。其函数原型为:sub qsort (byval base as any ptr, byval nu...
2020-04-10 10:43:48
306
原创 VisualFreeBASIC基础——选项卡控件的使用
在窗体中需要用到多页显示的时候就需要用到选项卡控件(TabControl)。一、属性1、Name(名称) 和窗口一样,Name属性是选项卡类的实例化,我们可以用【名称.属性/方法】来使用选项卡控件。2、Style(样式) 选项卡样式有4种,分别指定了选项卡标签的位置。0 - 标签在顶部,1 - 标签在底部,2 - 标签在左边,3 - 标签在右边。3、Mu...
2020-04-09 11:02:56
1811
原创 VisualFreeBASIC基础——状态栏的使用
状态栏可以通过状态栏设置窗口来添加设置窗格(Pane),在设计窗口放入状态栏,点击属性栏里的Status(窗格)属性的的下拉按钮,即会弹出状态栏设置窗口,如图: 通过状态栏设置窗口可以添加或插入窗格,可以设置每个窗格的文本,提示,对齐方式,样式和宽度以及图标。设置示例:一、属性1、Icon(图标) 设置或者返回窗格的图标,参数为窗格的序号,从0开始。...
2020-04-09 09:17:51
473
原创 VisualFreeBASIC基础——工具栏的使用
工具栏主要是通过工具栏编辑器来设置的。在设计窗体中放入一个工具栏,选择属性,Button(按钮)后的下拉按钮,即会出现工具栏编辑器,如图: 通过工具栏编辑器可以设置工具栏按钮的名称、样式、状态、文本、提示和显示图像。(这里说一下,工具栏显示的图像可用用ico,bmp,png等格式,这些图标可用到阿里巴巴矢量图标库(www.iconfont.cn)里寻找) 按新增或插...
2020-04-08 13:57:18
591
原创 VisualFreeBASIC基础——菜单的使用
VFB将菜单做成了控件,分为窗口菜单(TopMenu)和弹出菜单(PopupMenu)。窗口菜单显示在窗口中,弹出菜单一般用于右键弹出。从工具栏中选择窗口菜单和弹出菜单到设计窗体,选择窗口菜单,则可以看到属性栏中有Menu(菜单)属性,点击下拉按钮后会出现菜单编辑器,如图: 新增按钮可以新增一个菜单,插入按钮可以插入菜单,上下箭头(不大用,其实鼠标点也是一样的)可以上下移动一...
2020-04-08 12:15:03
922
原创 VisualFreeBASIC基础——下拉列表的使用
一、属性1、Name(名称)和窗口一样,Name属性是下拉列表类的实例化,我们可以用【名称.属性/方法】来使用下拉列表控件。2、Style(样式) 可以选择下拉列表的样式。0 - 标签和下拉列表(不可输入和编辑),1 - 文本框和下拉列表(可以输入和编辑),3 - 文本框和列表框(设置该样式时需要把下拉列表的高度拉高,否则看不到列表框)。3、Sorted(自动排序...
2020-04-08 11:18:18
1426
原创 VisualFreeBASIC基础——列表框的使用
一、属性1、Name(名称) 和窗口一样,Name属性是列表框类的实例化,我们可以用【名称.属性/方法】来使用列表框控件。2、Sorted(自动排序) 设置列表框是否按照字母自动排序。3、MultiColumn(多列) 设置列表框是否有多列。4、Enabled(可用)、Visible(显示) 使能和显示列表框。5、List(列表) ...
2020-04-08 10:38:37
875
原创 VisualFreeBASIC基础——单选和复选框的使用
单选和复选框的属性基本类似,所以就一起介绍吧。一、属性1、Name(名称) 和窗口一样,Name属性是类的实例化,我们可以用【名称.属性/方法】来使用控件。2、Caption(标题) 单选和复选框显示的标题。3、Value(值) 单选和复选框显示的值,选中为True,未选中为False。4、Enabled(可用)、Visible(显示)...
2020-04-07 21:25:20
783
原创 VisualFreeBASIC基础——文本框的使用
文本框常用于文本的输入、显示和编辑。在VFB工具栏上找到文本框控件,选择,拖动到窗口,如图:一、控件属性1、Name(名称) 和窗口一样,Name属性是按钮类的实例化,我们可以用【名称.属性/方法】来使用按钮控件。2、TextScrollBars(滚动条) 该属性可以设置文本框的滚动条是否显示(必须在MultiLine属性为True的时候),0 - 无滚...
2020-04-06 14:15:37
1735
原创 VisualFreeBASIC基础——按钮的使用
按钮是窗体设计时常用的控件,打开窗体后,单击工具栏选中按钮控件,然后在设计窗口中单击左键,拖动一定大小区域就可以放置一个按钮了。如图所示:我们放置了一个Command1。 在按钮上单击左键可以选中该按钮,此时可以看到按钮四周有焦点,我们可以按住焦点调整按钮到我们想要的大小。按住左键可以拖动按钮到你想要的位置。如果要删除按钮,可以选中按钮后按Delete键或者在按钮上右键单击,...
2020-04-01 13:40:59
1147
原创 VisualFreeBASIC基础——窗体的使用
新建工程后,会直接显示窗体,这时,我们单击窗体(默认就显示窗体属性,如果有控件需要单击窗体),就可以看到属性窗口显示的窗体属性。 直我们挑选一些常用的属性进行介绍1、Name(名称)属性 该属性是窗体实例化对象的名称,在编辑代码时,直接使用【窗体名.属性/方法】或者【窗体名.控件名.属性/方法】。与VB里的使用方法一样,在窗体中,可以使用Me来代替窗体名。...
2020-04-01 09:15:09
1833
1
原创 FreeBASIC编程IDE——VisualFreeBASIC简介
VisualFreeBASIC(简称VFB)是之前FireFly的改进版本,用于FreeBASIC的可视化设计,是国内勇芳仿照FireFly样式设计的IDE。该IDE类似VB6语言集成开发环境。拥有和VB6高度相似的语法规则,同时具有和C/C++语言一样强大底层操作的功能,夸平台、支持面向对象,能开发32位和64位软件、DLL、LIB库,是VB6最佳进阶语言。该软件很绿色,很纯净,不需要任...
2020-03-31 15:53:18
4471
原创 FreeBASIC学习笔记——FireFly常用控件值按钮(Button)和标签(Label)
11.2按钮(Button)和标签(Lable) 按钮和标签是我们设计窗体是最常用的控件,一般来说,按钮需要关注的属性包括按钮名(Name属性)、标题(Caption属性),其他属性根据需要查找,还有就是需要了解按钮的单击(Click)事件。如图11-5所示。图11-5 按钮的属性 标签是一个静态的文本框,我们主要需要了解标签名(Name属性)、
2017-12-20 10:27:13
915
原创 FreeBASIC学习笔记——FireFly常用控件之窗体(Form)
窗体是我们最常用的控件之一,FireFly编译器不在使用和设置上与Visual Basic的编译器有很多差异。所有了解窗体的设置和使用是十分必要的。11.1.1 窗体的样式设置 窗体的的外观设置在FireFly里需要通过WindowStyles属性来设置。选择窗体Form后,在工作区选择属性选项卡,可以看到窗体的各种属性,我们点击WindowStyles属性后面的按钮,在弹出
2017-12-19 08:27:12
1560
原创 FreeBASIC学习笔记——第09章 预编译
9.1 文件包含 FreeBASIC文件包含有三个指令:#Include,句包含另一个源文件的内容;#IncLib,包含一个库文件;#libpath,将库搜索路径添加到链接器的搜索路径列表中。 #Include在其指令出现的位置插入另一个文件的源代码。这具有从所包含的文件编译源代码的效果,就好像它是包含它的源文件的一部分。一旦编译器到达了include文件的末尾
2017-12-18 21:07:44
1076
原创 FreeBASIC学习笔记——8.4 指针与函数/过程
8.4.1、指针作为函数/过程的参数 指针可以作为函数或过程的参数使用,特别是调用系统的API函数或者其他一些函数库时会发现很多函数的参数都是通过指针来传递数据的。在函数或过程的参数中使用指针时需要注意的是: 1、由于指针本身就是地址数据,所以ByVal和ByRef修饰的结果是一样的,不存在按值传递进函数或者过程中后不会改变原有数据的情况,因为实际函数或者过程中
2017-12-18 20:28:51
729
原创 FreeBASIC学习笔记——8.3 指针与数组
数组其实与指向了一个连续的地址单元的指针相同,数组名相当于一个指针,下标相当于指针的偏移,假如有数组a(1),指向该数组的指针p,则a(0)其实就是*p,a(1)就是*(p+1)。指针可以用“[]”下标来引用一个连续单元的内存数据。例如:一维数组例如:二维数组
2017-12-18 15:22:13
658
原创 FreeBASIC学习笔记——8.2 指针的类型与运算
8.2.1 标准数据类型的指针 我们不能单独定义一个指针变量,指针必须有一个标准的数据类型。在FreeBASIC中,指针有两个名称:Pointer和Ptr,两者完全相同,都是声明指针变量。 指针的运算用操作符@或VarPtr获取变量的地址、StrPtr获取字符串地址,ProcPtr获取函数地址。用操作符 *访问存储在指针指向的内存位置的实际值。
2017-12-18 14:56:32
542
原创 FreeBASIC学习笔记——8.1 指针的概念
指针是一个特殊的变量,它里面存储的是一个地址数据。这个地址直接指向存在电脑存储器中另一个地方的值。由于能够通过地址能找到所需的变量单元,也就是该指针指向的地址指存储该变量,因此将地址形象化的称为“指针”。 指针指向的地址必须是有效的。 所以我们首先要明确,指针是一个变量,在32位程序里,所有类型的指针的值都是一个32位无符号整数,因为32位程序里地址全都是32位长。也就是定义一个
2017-12-18 14:53:56
650
原创 FreeBASIC学习笔记——第07章 常用内部函数
这里列举了大部分FreeBASIC的内部函数,和功能说明,主要是为了可以有一个大概的了解,方便使用时可以快速的查找。具体函数参数和使用方式可以查询帮助手册。7.1 时间和日期函数7.1.1 Visual Basic兼容函数 Visual Basic兼容函数需要引用头文件#include Once"vbcompat.bi",否则编译器不能识别这些函数。这里只例举一些常用的时
2017-12-16 22:41:18
913
原创 FreeBASIC学习笔记——6.4 可变参数
用于代替过程参数来传递可变数量的参数,或用作数组声明中的上限,以表示元素数量将由初始化程序确定。语法: 省略号(三个点,...)用于过程声明和定义以表示可变参数列表。必须始终指定第一个参数,并且必须使用C调用约定Cdecl调用该函数。在过程主体中,va_first,va_arg和va_next用于处理变量参数。va_first用于返回指向变量参数列表中第一个参数的指针
2017-12-16 22:37:16
566
原创 FreeBASIC学习笔记——6.2 函数
一个函数定义一些语句或函数调用执行的代码块,并在完成时返回一个值(返回值)。使用函数的几个好处:1、减少程序冗余;2、允许在许多程序中重用代码;3、提高程序的可读性;4、提高程序的可维护性;5、使程序的扩展变得容易。 访问权限:其中Public和Private关键字分别指定公共或内部模块级访问权限。如果没有给定,则该函数默认为公共访问(Public)。调用约定:使用Cdecl
2017-12-16 22:33:10
831
原创 FreeBASIC学习笔记——6.1 过程
过程(即子程序)是可以在程序的任何时候调用的代码块。该代码可能需要执行多次,过程就是通过用单个子程序调用来代替这些代码块手段。过程还可以让用户扩展FreeBASIC语言以提供自定义命令。FreeBASIC内置的许多功能只是默认链接到的“运行库”的子程序。 Sub关键字标记过程的开始,其结尾必须使用标有End Sub。Identifier表示过程名。过程的代码与模块中其他程序的代码
2017-12-16 16:11:24
2075
原创 FreeBASIC学习笔记——第05章 数组
数组是变量的特殊类型,作为多个值的容器或元素。数组可以存储任何类型的元素,并且其所有元素共享相同的类型。这些元素通过数组中的位置来读取或写入。数组有大小,它们等于在任何给定时间存储的元素的数量。静态在其整个生命周期内具有不变的大小,而动态数组的大小可以动态更改。数组使用操作符“()”来访问数组中的各个元素。5.1 静态数组的定义 静态数组一旦定义后就不能改变范围,可以使用Ex
2017-12-16 09:44:58
773
原创 FreeBASIC学习笔记——4.3 转移语句
4.3.1 Goto 将代码执行跳转到标签行。为了源代码可读性,应尽量避免使用Goto,而应该用过程(Sub)或函数(Function)来进行结构性的程序设计。语法:例如:4.3.2 On Goto语法: 根据Expression 的值赋值到不同的标签。表达式值为1将分支到第一个标签,值为2到第二个等。如果Expres
2017-12-15 19:29:17
420
FireFly窗体控件的使用例程
2017-12-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人