论坛的首页
勇芳的软件
教程和帮助
VisualFreeBasic编程文档
勇芳系列软件帮助说明教程
留言或交流
登录
搜索
登录
搜索
勇芳
累计撰写
330
篇文章
累计收到
0
条评论
首页
栏目
论坛的首页
勇芳的软件
教程和帮助
VisualFreeBasic编程文档
勇芳系列软件帮助说明教程
留言或交流
登录
教程和帮助
2026-1-20
VisualFreeBasic指南_支持高分屏(DPI)
电脑显示器起初都是 100% 的 DPI ,就是 96像素 DPI。 随着高分辨率显示器的出现,和 WIn10 的出现,越来越多电脑的 DPI 会是 125% 150% 200% 等等。 VisualFreeBasic5 已经很好的支持它们,无需我们考虑高DPI下软件显示的问题 但是,如果你要用代码调整控件位置和大小,那就必须要使用以下函数,就可以应对 不同DPI的情况了。 因此,VFB为大家提供4个DPI函数 DpiScaleF 带小数计算 DpiScaleI 只保留整数 DpiUnScaleF 带小数计算 DpiUnScaleI 只保留整数 函数 [DpiScaleI] 你编程时按照 100% DPI 写,套上函数即可,比如: me.move DpiScaleI(100),DpiScaleF(100) 所有,有关位置和大小,都需要使用这个函数转换,才可以自动适应不同DPI。 有顺转换,当然有逆向函数,把其它DPI的值转换为 100%DPI时的数值 DpiUnScaleI DpiUnScaleF
2026年-1月-20日
73 阅读
0 评论
VisualFreeBasic编程文档
2026-1-20
VisualFreeBasic指南_工程属性
正在备货中
2026年-1月-20日
83 阅读
0 评论
VisualFreeBasic编程文档
2026-1-20
VisualFreeBasic指南_多国语言
工程属性里,选上多国语言 就选上,你的软件就支持了多国语言 然编译以后,在你本软件 EXE的文件夹下就生成一个文件: "Languages.txt" 这个就是语言文档,打开文件后,就可以把原文翻译成译文。 多国语言处理函数 加载语言文件,请确保最先被执行 vfb_LoadLanguage(app.path & "Languages.txt") 一般情况,我们都放在入口函数里加载 Function FF_WINMAIN(ByVal hInstance As HINSTANCE) As Long vfb_LoadLanguage(app.path & "Languages.txt") ‘加载语言文件 Function = False End Function 窗口和控件上的文字,都会被自动提取到语言文档中,而代码中那些需要提取,那些不需要,需要你自己套个函数来确定,只有套这个 vfb_LangString 的文字才被提取到语言文档。 vfb_LangString("文字") 注意:这个 “文字” 必须是文字,不允许 变量、表达式,函数等等。
2026年-1月-20日
78 阅读
0 评论
VisualFreeBasic编程文档
2026-1-20
VisualFreeBasic指南_图像管理器(资源管理)
图像管理器,其实是资源管理,可以放任意东西,因为大多是存放图像的,因此习惯上叫它为图像管理器。 叫什么没关系,知道这是干什么的即可。 就是可以把任意文件打包进EXE里的管理器,很多时候我们用到到图标,图片文件等,打包后,可以用代码实现读取,供我们使用。 名称:用于代码中标识这个资源。由 IDE 自动产生,不允许用户自己修改。 格式:每种格式,WINDOWS系统 都有不同的API 负责直接读取。 例题 : 从资源里加载图标 LoadIcon(app.hInstance,"IMAGE_xxxx") 从资源里加载图像 LoadImage(app.hInstance,"IMAGE_xxxx", IMAGE_ICON, 0, 0, LR_SHARED) 从资源里加载原始数据到 String 变量里 a= GetResourceStr(资源名称) '注意,这是原始数据加载,不是字符串加载 控件属性里包含图标或图片的,点击后就到这里引用 双击选择的文件或附加,就绑定到控件,控件就自己使用它了,不需要你写任何代码。
2026年-1月-20日
87 阅读
0 评论
VisualFreeBasic编程文档
2026-1-20
VisualFreeBasic指南_创建和显示窗体
创建窗体 ------------ 在【工程】菜单中选择【新增窗口】,再选择个模板,即可按照模板一样创建出一个窗口了。 显示窗体 ----------- 代码输入:即可显示出这个窗口,其中 Form1 是窗口名称,根据在工程中的名称来输入。 Form1.Show 显示窗口,其永远在某个窗口之前(主从关系)-------------- 代码输入:这样F2窗口永远在F1之前了。(F2窗口成为F1的附属窗口) Form2.Show Form1.hWnd 其中 hWnd 为窗口句柄,是系统为每个窗口和控件分配的数值,在WIn系统中,所有窗口和控件都分配独立的值,不会发生重复,这是为了API 操作窗口和控件来标识的。 例题: Dim aa As HWND = Form2.Show(Form1.hWnd ) ’aa 返回新创建的 F2窗口的句柄。 模态窗口 -------------- 代码将会暂停到此,等待F2窗口关闭后,才会执行到下一行代码,其间点击 F1窗口会发生声音警告,不可以操作 F1窗口。 Form2.Show Form1.hWnd,True 传值给窗口事件 ------------------ 例题:把 999 的值传给它 Form2.Show Form1.hWnd,False,999 这个值会传递到窗口的创建和显示事件中 Sub Form2_Shown(hWndForm As hWnd,UserData As Integer) Sub Form2_WM_Create(hWndForm As hWnd,UserData As Integer) 这 UserData 变量,就是传来的值。 复用窗口 (需要在编辑时,窗口上“多开”属性,选择允许)--- 执行一次 Form2.Show 就出一个窗口,执行2次,就出2个窗口 N次就 N多窗口。 复用窗口后,操作窗口和其控件时,必须多一个步骤,就是先设置句柄,例题: 每个事件都有个窗口变量:hWndForm Me.hWndForm = hWndForm Label1.hWndForm = hWndForm Form2.Text1.hWndForm = hWndForm 必须先设置后,才能执行后面控件操作。因为你重复开启同一个窗口,那么系统无法知道你具体操作的是那一个,只能用窗口句柄来识别。
2026年-1月-20日
78 阅读
0 评论
VisualFreeBasic编程文档
2026-1-20
VisualFreeBasic指南_函数的参数选择
就是需要输入函数时,有可选项,自动提示选项给输入选择 如图所示,打了“,”后就出个选择,这里的选择,自己写的函数可以完全自己定义。 定义方法: 在函数的注解里 {1.数据1 说明2.数据2 说明1.数据3 说明3} 用 {} 包括所有数据,用英文小数点分割,第一个是数字,表示第几个参数,英文等号,表示为返回选择, Sub aabbcc( Modal As Boolean = False) ' {1.True.False} End Sub 这样在打代码时 aabbcc( 打了 ( 就有提示True 和 False 的提示了。
2026年-1月-20日
89 阅读
0 评论
VisualFreeBasic编程文档
2026-1-20
VisualFreeBasic指南_DLL声明和生成
调用其它DLL 先复制DLL到软件的输出文件夹 静态调用:声明DLL Declare Function 函数名 Lib "dll文件" Alias "DLL中的函数名"(ByVal eID As Integer ) As Integer 一般在 特殊函数的 程序起始模块 中声明(为了不出问题,强力要求在起始模块里声明DLL) "dll文件" 文件名,但不可以包含 “.dll” ,就纯名字,不包含扩展名 以上适合带符合输出的DLL使用,VFB默认都是带符合号的,"DLL中的函数名@4" 全部是大写。@4 是和参数有关,1个参数是@4 ,2个是@8 等。 VFB 调用VFB写的DLL,不需要加符合(@4),可以省,其它编程就必须要加符合了。如果是其它按照标准C写的DLL,需要加层说明。 Extern "C" Declare Function 函数名 Lib "dll文件" Alias "DLL中的函数名"(ByVal eID As Integer ) As Integer End Extern 套了层 C 模式,函数名要区分大小写,不带 @4 等符号,绝大多数DLL都是C模式,因此必须套上。 动态调用DLL:直接上代码 1)加载DLL Dim As Any Ptr library = DyLibLoad( "DLL文件名" ) '就文件名,不能带 .DLL If ( library = 0 ) Then AfxMsg "加载DLL失败" Return 1 End If 2)声明函数 Dim AddNumbers As Function( ByVal As Integer, ByVal As Integer ) As Integer AddNumbers = DyLibSymbol( library, "ADD2" ) ' 特别提醒,必须全部大写 '从DLL查看器里可以看到全称是 ADD2@8 ,而FB用FB的DLL可以省略 @8 的符号 If ( AddNumbers = 0 ) Then AfxMsg "无法在DLL中检索Add2函数的地址" Return 1 End If 3)使用,和使用本地函数和静态方法一样,无区别 a= AddNumbers (b,c) 4)完成后卸载 DyLibFree( library ) '卸载DLL ,特别注意,假如DLL还在工作,卸载会让软件崩溃 生成DLL 自己写DLL,若想要输出函数,在函数名后面加 Export 即可,如: Function aaa(ByVal b As Long) As long Export 此时输出会带符号,其它软件声明时,需要加符号 如: Declare Function 函数名 Lib "dll文件" Alias "AAA\@4 "(ByVal b As Long ) As Long 函数名全部变大写。当然我们也可以生成标准C 的DLL Extern "C" '注意:此代码必须在 特殊函数的 程序起始模块中 ,其它普通的可以在任意地方 Function aaa(ByVal b As Long) As long Export ...... End Function End Extern 其它软件声明就按照C声明即可。标准C,函数名区分大小写。(VFB 默认会全部变大写) 减少生成DLL文件大小的方法: 假如不用GDI+,工程属性里取消 GDI+ \ 在特殊函数的 程序起始模块中注销不使用的引用:如 #include Once "afx/CWindow.inc" 等 (注意:注销后编译出错,就恢复,编译正常表示没用到,就可以省一点点大小。) DLL返回String问题: DLL中有个函数返回String,EXE调用这个DLL函数就会发生内存泄漏问题BUG(DLL和EXE必须是FB写的,其它编程语言在任何情况下都不可以使用返回字符或字符作为参数) 例:DLL中代码 -------------------- Function Myaaa1() As String Export ' Dim As String ss ss="ferdddd" Function = ss End Function EXE中代码 ---------------- Declare Function Myaaa1 Lib "FunSupLib" Alias "MYAAA1"() As String Dim i As Long ,ss As String For i=0 To 100000 ss = Myaaa1() Next 用多次循环,就能直接在进程管理器发现此时EXE的内存占用变大。 解决方法代码:DLL ------------------- Function Myaaa1() ByRef As String Export ' Static As String ss ss="ferdddd" Function = ss End Function EXE代码 -------------- Declare Function Myaaa1 Lib "FunSupLib" Alias "MYAAA1"() ByRef As String 就是加个 ByRef 定义和 DLL中使用 Static 来返回变量即可。
2026年-1月-20日
82 阅读
0 评论
VisualFreeBasic编程文档
2026-1-20
VisualFreeBasic指南_代码库
什么是代码库 在编程中,代码库是一组可重复使用的代码模块、函数、类等的集合。它可以帮助程序员提高开发效率,避免重复编写相同的代码。代码库可以是编程语言自带的标准库,也可以是由第三方开发的库,还可以是程序员自己编写并积累的自定义库。 代码库类型 以上除了“我的代码库”(自定义库),其它都内置在 VFB里,供大家直接使用。 自己编写“我的代码库” 在新建工程中,选择“我的代码库”,然后取一个新建的名称,创建一个即可。 安装第三方库 库的来源:网上找到或别人给你的。一般在 VFB编程群里下载 下载文件后,解压文件到,VFB软件文件夹中的 Private 子文件里 最后在 VFB中,刷新代码库 刷新以后,在我的代码库中,就会显示 每个库都有自己的使用方式,假如库有专门的使用说明,可以点帮助区,打开查看 自己创建的库,需要支持库的设置方法 假如你自己写的库,需要带一个动态库或静态库的,需要写好库文件。 VFB软件识别的是 *.INC 文件,这个是我们自己写的库代码 选择我的代码库里的相关的库,然后点击设置 设置里面的拷贝列表 格式为,一行一个文件:c(只是复制)|代码库文件名|输出文件名 编译完成后,需要删除:k(复制删除)|代码库文件名|输出文件名 以上是截图中,是需要静态库,要是用静态库,就用以下设置 32位 c|cairo32.dll|cairo.dll 64位 c|cairo64.dll|cairo.dll
2026年-1月-20日
105 阅读
0 评论
VisualFreeBasic编程文档
2026-1-20
VisualFreeBasic指南_模板
新建工程时,添加窗口,添加模块,都有模板,而此模板可以新增、删除、修改等 在软件文件夹中的 “template” 子文件夹 一个是新建窗口的模板,一个是新建工程的模板 可以随意把自己写的工程,复制到里面,当成模板使用。
2026年-1月-20日
90 阅读
0 评论
VisualFreeBasic编程文档
2026-1-20
VisualFreeBasic指南_插件
基本使用方法 插件可以增强VFB的功能,可以在选项中,管理插件是否开启和先后次序 大多插件带有源码,可以在主页的插件工程里打开。 插件的API,在 插件共用模块里定义,可以打开插件工程查看。 创建新的插件工程,会自动包含插件共用模块 编写新插件 点击新建工程,选择插件 增加和删除 打开VFB的文件夹 一个插件,一个DLL文件,随意操作。
2026年-1月-20日
85 阅读
0 评论
VisualFreeBasic编程文档
29
30
31
32
33