这里是勇芳编写的软件使用教程和使用帮助
论坛的首页 勇芳的软件
教程和帮助
  • VisualFreeBasic编程文档
  • 勇芳系列软件帮助说明教程
  • 留言或交流 登录
    登录
    侧边栏壁纸
    博主头像
    勇芳

    • 累计撰写 330 篇文章
    • 累计收到 0 条评论
    • 首页
    • 栏目
      • 论坛的首页
      • 勇芳的软件
      • 教程和帮助
        • VisualFreeBasic编程文档
        • 勇芳系列软件帮助说明教程
      • 留言或交流
      • 登录
    教程和帮助
    • VisualFreeBasic代码_多线程 2026-1-21
      VisualFreeBasic代码_多线程 当开启一个软件后,系统分配给一个线程给软件执行,就是说,你的软件只是执行一个程序。然后有多线程,在同一时间,可以同时执行多个程序。 创建一个多线程 执行多线程,FB语言中,有2种创建方法。 指针方式,稳定高效,推荐使用 多线程过程,和普通过程一样,但过程参数必须是1个,而且是指针。 Threaddetach ThreadCreate(Cast(Any Ptr,@多线程过程),Cast(any ptr,参数)) Sub 多线程过程(参数 As Any Ptr) ......这里是代码.....过程结束,那么这个线程就结束 End Sub 调用方式,支持多个参数,0个或n个参数。 Threaddetach Threadcall 多线程过程(11,22,33) Sub 多线程过程(参数1 As Long,参数2 As Long ,参数3 As Long ) '......这里是代码.....过程结束,那么这个线程就结束 End Sub 注意: 调用多线程的参数,必须传值给它,要是传变量给它,因为调用方的函数结束,变量会被释放,造成多线程使用这个变量发生错误,甚至软件崩溃。因为它们是同时执行的。 等待多线程完成 创建多线程后,返回一个多线程句柄 Dim aa As Any Ptr =ThreadCreate(Cast(Any Ptr,@多线程过程),参数) Dim aa As Any Ptr =Threadcall 多线程过程(参数) 假如你不需要控制多线程,可以直接释放句柄,不释放就会产生内存泄漏。 Threaddetach aa 等待线程完成执行并释放线程句柄(会一直等待多线程完成才会返回,这和单线程有何区别?不是我们想要的方式) ThreadWait aa 循环判断多线程是否完成 While IsThreadAlive( *aa) DoEventsEX(100) Wend Threaddetach aa 多线程使用全局变量 假如有多个线程,同时对全局变量赋值或读取,将会造成不同步现象,特别是字符串,可能会造成软件崩溃。下面语句是专门为了解决这个问题的。 MutexLock 获取互斥体 MutexUnlock 释放互斥锁 MutexDestroy 销毁互斥 MutexCreate 创建用于同步线程执行的互斥体 声明一个全局变量 Dim Shared 多线程锁 As Any Ptr = MutexCreate() 在不需要使用后,需要销毁,避免内存泄漏 MutexDestroy 多线程锁 多线程中在需要读写全局内存 MutexLock 多线程锁 ...... 一些读写全局内存 ......... MutexUnlock 多线程锁 注意: “多线程锁”同一时间只能一个线程执行,其它的线程挂起,暂停执行。 过于频繁使用“多线程锁”,严重影响多线程执行效率,还不如单线程效率高。因此在设计多线程的程序框架时,必须考虑效率问题。 多线程中窗口问题 当在多线程中,启动了一个窗口,当多线程过程结束,窗口会被强制关闭,因此在多线程中,请勿启动窗口,会发生很多问题。 Form2.Show 多线程中请勿执行启动窗口 一定要启动窗口,可以对主窗口发自定义消息,实现在主线程中启动窗口。 PostMessage( form1.hWnd ,WM_USER+ &H1001 , 0 , 0 ) 然后在主窗口的自定义消息事件中 Function Form1_Custom(hWndForm As hWnd, wMsg As UInteger, wParam As wParam, lParam As lParam) As LResult Select Case wMsg Case WM_USER+ &H1001 Form2.Show End Select Function = FALSE ' 若不想系统继续处理此消息,则应返回 TRUE (俗称吃掉消息)。 End Function 控件属性,虽然大多数支持在多线程中设置,但是有小部分一些特殊的,不支持多线程操作。 为了绝对的安全,一般不建议在多线程中,设置控件属性。可以想象,有多个线程同时设置控件属性会发生什么事情?很难预料。
      • 2026年-1月-21日
      • 50 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic代码_日期和时间 2026-1-21
      VisualFreeBasic代码_日期和时间 Now 获取当前系统时间为日期序列号 Dim a As Double = Now() Print Format(a, "yyyy-mm-dd hh:mm:ss") Date 以字符串形式返回当前系统日期 Print Date '打印当前日期 Time 以字符串形式返回当前系统时间 Print "目前的时间是:"; Time Timer 返回电脑开机时间,单位秒 Print "电脑开机了:" & Timer & "秒" SetDate 设置当前的系统日期 SetDate “2099-1-1” SetTime 设置当前系统时间 SetDate “1:2:3” 从日期序列中提取信息 Year 从日期序列号获得一年 Month 从日期序列号获得一年中的月份 Weekday 从日期序列号获取星期几 Day 从日期序列号获取一个月的日子 Hour 从日期序列号获取一天中的小时 Minute 从日期序列号获取分钟。 Second 从日期序列号获取秒数 DatePart 从日期序列获取日期的单独部分,比如年、月、日等 创建日期序列 DateValue 从字符串返回日期序列号 TimeSerial 获取日期序列号指定的小时、分钟、和秒 DateSerial 创建日期序列号 TimeValue 从时间字符串获取日期序列号 计算日期时间差 DateAdd 以指定的间隔偏移日期 Dim d As Double d = Now() Print "1小时后时间", Format( DateAdd( "h", 1, d ), "yyyy-mm-dd hh:mm:ss") Print "1天后时间", Format( DateAdd( "d", 1, d ), "yyyy-mm-dd hh:mm:ss") Print "1周后时间", Format( DateAdd( "ww", 1, d ), "yyyy-mm-dd hh:mm:ss") Print "1个月后时间", Format( DateAdd( "m", 1, d ), "yyyy-mm-dd hh:mm:ss") DateDiff 获取以指定间隔测量的两个日期的差额 Dim ds As Double = DateSerial(2005, 11, 28) + TimeSerial(7, 30, 50) Dim ts As Double = DateSerial(2006, 1, 3) + TimeSerial(9, 10, 33) Print "2个日期相差:" & DateDiff("YYYY", ds, ts) & "年" Print "2个日期相差:" & DateDiff("d", ds, ts) & "天" Print "2个日期相差:" & DateDiff("s", ds, ts) & "秒"
      • 2026年-1月-21日
      • 55 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic代码_数值转换为字符串 2026-1-21
      VisualFreeBasic代码_数值转换为字符串 Bin 返回一个整数的二进制,字符串表示形式 Print Bin(54321) Print Bin(54321, 5) Print Bin(54321, 20) 将产生输出: 1101010000110001 10001 00001101010000110001 Oct 将数字转换为八进制,字符串表示形式 Print Oct(54321) Print Oct(54321, 4) Print Oct(54321, 8) 将产生输出: 152061 2061 00152061 Hex 将数字转换为十六进制,字符串表示形式 Print Hex(54321) Print Hex(54321, 2) Print Hex(54321, 5) 将产生输出: D431 31 0D431 Str 返回一个文本类型的数值或 Unicode 字符的文本 Dim a As Integer Dim b As String a = 8421 b = Str(a) Print a, b WStr 返回数字或ASCII字符串的宽字符字符串表示形式 Dim zs As ZString * 20 Dim ws As WString * 20 zs = "你好,世界" ws = WStr(zs) Print ws Format 格式化指定格式的数字,返回 字符串 数字格式 Print Format(99100.123456, "#,##0.##") 输出:99,100.12 print format(12, "0000") 输出:0012 日期时间格式 Format(Now, "yyyy年mm月dd日 hh时mm分ss秒") 输出:2024年09月01日 01时01分01秒 WBin 返回一个数字的二进制WString(Unicode)表示 WOct 返回一个数字的八进制WString(Unicode)表示 WHex 返回一个数字的十六进制WString(Unicode)表示
      • 2026年-1月-21日
      • 41 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic代码_数值数据序列 2026-1-21
      VisualFreeBasic代码_数值数据序列 MKShort 从Short变量转换成String的二进制数据,将其长度为2字节 Dim a As Short, b As String a = 4534 b = MKShort(a) Print a, CVShort(b) MKL 从Long变量转换成String的二进制数据,将其长度为4字节 Dim a As Long, b As String a = 4534 b = MKL(a) Print a, CVL(b) MKI 从整数变量到与输入变量的大小相同长度的String的二进制复制 32位软件是 4字节,64位软件是8字节 Dim a As Integer, b As String a=4534 b=MKI(a) Print a, CVI(b) MKLongInt 从LongInt变量转换成String的二进制数据,将其长度为8字节 Dim a As LongInt, b As String a = 4534 b = MKLongInt(a) Print a, CVLongInt(b) MKS 从Single变量转换成String的二进制数据,将其长度为4字节 Dim n As Single, e As String n = 1.2345 e = MKS(n) Print n, CVS(e) MKD 将Double变量转换成String的二进制数据,将其长度为8字节 Dim n As Double, e As String n = 1.2345 e = MKD(n) Print n, CVD(e) CVShort 将一个2个字节String转换为Short整数变量 Dim si As Short, s As String s = "AB" si = CVShort(s) CVL 将Single数或4个字节String转换为整数(Long)变量 Dim l As Long, s As String s = "ABCD" l = CVL(s) CVI 转换成整数,32位软件和64位软件不相同。 Dim i As Integer, s As String s = "ABCD" i = CVI(s) CVLongInt 将Double数或8个字节String转换为LongInt变量 Dim ll As LongInt, s As String s = "ABCDEFGH" ll = CVLongInt(ll) CVS 将32位整数或4个字节String转换为Single变量 Dim f As Single, i As Integer f = 1.125 i = CVI(f) CVD 将64位整数或8个字节String转换为Double Dim d As Double, l As LongInt d = 1.125 l = CVLongInt(d) Print Using "l = _&H&"; Hex(l) Print Using "cvd(i)= &"; CVD(l)
      • 2026年-1月-21日
      • 57 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic代码_操作字符串部分文本 2026-1-21
      VisualFreeBasic代码_操作字符串部分文本 LCase 返回字符串的小写副本 Print LCase("AbCdEfG") 输出:abcdefg UCase 返回字符串的大写副本 Print UCase("AbCdEfG") 将产生输出:ABCDEFG InStr 查找字符串中第一个出现的子字符串或字符 从第1个字符查到最后1个字符 '它会返回4 Print InStr("abcdefg", "de") '它将返回0 Print InStr("ABCDEFG", "h") '它将搜索任何字符“f”,“b”,“c”,并返回2,首先遇到“b” Print InStr("ABCDEFG", Any "FBCen") InStrRev 查找字符串中子字符串或字符的最后一次出现 从最后1个字符反向查到第1个字符 '它会返回4 Print InStrRev("ABCdeFG", "de") '它将返回0 Print InStrRev("ABCDEFG", "h") Left 返回字符串的最左边的子串 Dim text As String = "你好,世界" Print Left(text, 4) 将产生输出:你好 Dim text As wString *20 = "你好,世界" Print Left(text, 4) 将产生输出:你好,世 Right 返回字符串的最右边的子串 Dim text As String = "你好,世界" Print Right(text, 4) 将产生输出: 世界 Dim text as wstring * 20="你好,世界" Print Right(text,4) '显示“好,世界” Mid (函数) 返回字符串的子字符串 Print Mid("ABCDEFG", 3, 2) '从第3个字符开始,返回2个字符 Print Mid("ABCDEFG", 3) '从第3个字符开始,一直到最后的字符 将产生输出: CD CDEFG Mid (语句)用另一个字符串覆盖一个字符串的子字符串 Dim text As String text = "abc 123" Print text '显示“abc 123” '用另一个字符串替换文本的一部分 Mid(text, 5, 3) = "456" Print text '显示“abc 456” LSet 左对齐字符串 Dim buffer As String buffer = Space(10) LSet buffer, "91.5" Print "-[" & buffer & "]-" RSet 右对齐字符串 Dim buffer As String buffer = Space(10) RSet buffer, "91.5" Print "-[" & buffer & "]-" Trim 删除字符串左侧和右侧的周围的子字符串或字符 删除前后空格字符 Dim s1 As String = " 卡在中间 " Print Trim(s1) '得到一个前后没空格的字符 删除前后指定字符 Dim s1 As String = "...卡在中间 ..." Print "'" + Trim(s1, Any ".") + "'" Dim s2 As String = "BaaBaaaaB随着你aaBBaaBaa" Print "'" + Trim(s2, "Ba") + "'" Print "'" + Trim(s2, Any "aB") + "'" LTrim 删除一个文本左边连续的子文本或字符 删除前面空格字符 Dim s1 As String = " 卡在中间 " Print LTrim(s1) '无前面空格的字符 删除指定字符 Dim s1 As String = "101事情要做" Print "'" + LTrim(s1) + "'" Print "'" + LTrim(s1, "01") + "'" Print "'" + LTrim(s1, Any "01") + "'" RTrim 删除字符串右侧的周围的子字符串或字符 删除后面空格字符 Dim s1 As String = " 卡在中间 " Print RTrim(s1) '无后面空格的字符 删除指定字符 Dim s1 As String = "文字10101" Print "'" + RTrim(s1) + "'" Print "'" + RTrim(s1, "01") + "'" Print "'" + RTrim(s1, Any "10") + "'"
      • 2026年-1月-21日
      • 54 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic代码_字符转换 2026-1-21
      VisualFreeBasic代码_字符转换 Chr 从一个或多个ASCII整数值返回一串字符 Print "97的ASCII码是:", Chr(97) Print Chr(97, 98, 99) '打印abc Dim s As String = Chr(97, 98, 99) Print s Asc 返回字符的相应ASCII或Unicode整数表示形式 Print "'a'的ascii代码是:", Asc("a") Print "'b'的ascii代码是:", Asc("ABC", 2) 将产生输出: a'的ascii代码是:: 97 B'的ascii代码是:: 98 WChr 返回包含一个或多个Unicode字符的宽字符字符串 Print "20013的UNICODE代码代表的字符是:", WChr(20013) Print "多个UNICODE字符:", WChr(20013, 25991, 32534,31243) 将产生输出: 934的UNICODE代码代表的字符是:中; 多个UNICODE字符:中文编程
      • 2026年-1月-21日
      • 46 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic代码_字符串转换为数字 2026-1-21
      VisualFreeBasic代码_字符串转换为数字 Val 将字符串转换为浮点数 Dim a As String, b As Double a = "2.1E+30xa211" b = Val(a) Print a, b 输出:2.1E+30xa211 2.1e+030 ValInt 将字符串转换为整数 Dim a As String, b As Integer a = "20xa211" b = ValInt(a) Print a, b 输出:20xa211 20 ValLng 将字符串转换为长整数 Dim a As String, b As LongInt a = "20xa211" b = ValLng(a) Print a, b 输出:20xa211 20 ValUInt 将字符串转换为无符号整数 Dim a As String, b As UInteger a = "20xa211" b = ValUInt(a) Print a, b 输出:20xa211 20 ValULng 将字符串转换为无符号长整数 Dim a As String, b As ULongInt a = "20xa211" b = ValULng(a) Print a, b 输出:20xa211 20
      • 2026年-1月-21日
      • 58 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic代码_创建字符串 2026-1-21
      VisualFreeBasic代码_创建字符串 ZString 标准数据类型:8位字符串 (固定长度) 遇到 0 就截断的定长字符,假如第1个字符为 0 那么不管后面有无内容,本字符为空 Dim a As zString * 10 *10 表示空间为10个字符,最后1个保留为0 ,因此最多储存 9个字符,你给它赋值100个字符,多余的将会被丢弃。 String 标准数据类型:8位字符串 (可变长度) 可以包含 0 编码字符的类型,字符串长度可变 Dim a As String 你可以随意赋值任意长度的文字,但受内存限制,一般不能超过1G WString 标准数据类型:16位字符串(固定长度) 遇到 0 就截断的定长字符,假如第1个字符为 0 那么不管后面有无内容,本字符为空 Dim a As wString * 10 *10 表示空间为10个字符,最后1个保留为0 ,因此最多储存 9个字符 StringW 标准数据类型:16位字符串 (可变长度) 可以包含 0 编码字符的类型,字符串长度可变 Dim a As StringW 你可以随意赋值任意长度的文字,但受内存限制,一般不能超过1G Len 返回表达式或数据类型的长度 Dim a As zString ="aa中文" Dim b As wString ="aa中文" print len(a) 输出:6 一个中文占2个 print len(b) 输出:4 每个文字占1个 Print Len(Integer) '返回4 Space 创建一个填充空格的给定长度的字符串(" ") 就是生成几个空格的字符串 Dim a As String a = "x" + Space(3) + "x" Print a '打印:x x WSpace 创建一个填充空格(" ")的给定长度的WString Dim a As WString * 10 a = "x" + WSpace(3) + "x" Print a '打印:x x String (函数) 用特定字符创建并填充一定长度的字符串 Print String( 4, 69 ) '打印:“EEEE” Print String( 5, "确实" ) '打印:“确实确实确实确实确实” Wstring (函数) 填写一定长度的WString,具有一定的宽字符 Print WString( 4, 934 ) Print WString( 5, WStr("确实") )
      • 2026年-1月-21日
      • 39 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic代码_字符串类型分类 2026-1-21
      VisualFreeBasic代码_字符串类型分类 在VB6 中,字符串就一种类型,而在 VFB 里,就有2中类型 一、ASCII编码字符串 (8位,1个字节内存大小) 电脑中的内存和文件,最小单位就是字节,1个字节是8位的2进制,因此称为 8位或1字节。1个字节的数字从 0 到 255 ,可以表示 256个字符。当然 0 表示无字符,字符就 255个。 ASCII编码字符串 以1个字节为1个文字,详细点击此链接查看 为了更好的理解它,我们称它为英文字符,后来为了可以使用中文,就搞了1个中文占用2个英文字来记录常用字,其它不常用和特殊文字,比方火星文等都会变成“?”(问号)造成文字永久丢失。 编程中代码类型 Dim a As ZString *100 =“abc中文” Dim b As String =“abc中文” print len(a),len(b) '打印字符个数 打印结果:7 , 7 常用字符函数:Len Mid Left Right InStr Trim LCase UCase 二、Unicode编码字符串 (16位,2个字节内存大小) 为了更好的使用中文,以及支持全部中文字,衍生出了Unicode编码字符串,我们可以理解为中文字符,不管中文或英文,都占用2个字节内存,可以储存火星文等全系列中文。处理中文一般都推荐这个类型。 编程中代码类型(VB6使用的字符串类型,就是这个) Dim a As WString *100 ="abc中文" Dim b As StringW ="abc中文" print len(a),len(b) '打印字符个数 打印结果:5 , 5 常用字符函数:LenW MidW LeftW RightW InStrW TrimW LCaseW UCaseW 三、固定长度和可变长度 固定长度的字符串类型,就是先申请内存,可以最大装载多少文字。 Dim a As ZString *100 Dim a As WString *100 其中,100 表示可以最多容纳 100个文字,但是最后 FB语言会处理成 0编码字符,表示字符结束,因此,100 就是最多可以容纳 99个文字,你给它超过 99个文字,那么超出部分就丢弃掉。 此时内存占用空间,永远都是 100 个,不管你装载几个文字都不影响内存占用。 注: 英文类型占内存是1个文字1个字节, 中文类型占内存1个文字2个字节 可变长度的字符串类型,就是字符有几个,就申请多少内存。 Dim b As String Dim b As StringW 此时最大装载文字个数,受内存限制,一般最大 1G 内存大小。 二者优点和缺点 固定长度的处理速度快,浪费内存空间 可变长度的处理速度慢,不浪费内存空间 比方字符拼贴:你会发现速度真的无法比。所以,可以根据自己代码需求来使用字符变量类型。 Dim i As Long Dim b As ZString * 100005 for i=0 To 100000 b = b & "a" next Dim a As String for i=0 To 100000 a = a & "a" next Dim bw As WString * 100005 for i=0 To 100000 bw = bw & "a" next Dim aw As Stringw for i=0 To 100000 aw = aw & "a" next 四、字符串类型特殊用法 字符串中某个文字的字符编码 我们可以用以下函数 Dim a As String ="abc" ,b As StringW ="中文字" Print Asc(a,1),AscW(b,1) 其中数字 1 是第几个字符 还有一个效率高的方法,用的是 中括号 [] 不是圆括号 Dim a As String ="abc" ,b As StringW ="中文字" Print a[0],b[0] 数字 0 表示第1个字符,以此类推。 注意 Asc(a,1),AscW(b,1) 属于安全操作,超过字符就返回 0 , a[0],b[0] 是不安全操作,不可以乱来,超过字符长度,软件会崩溃。 String 类型不只是ASCII编码字符串 由于 String 类型 支持 0 字符串,其它字符类型不支持,它就可以装载任何数据,而不单单是文字。String类型可以直接等同于字节数组类型 Dim a As String Dim b() As UByte 很多时候,使用字节数组类型,写代码比较麻烦,那么使用 a As String 就方便多了。 比方函数返回,不支持数组返回,需要返回时就必须使用 a As String : Function Myaaa() As String '支持返回 End Function Function Myaaa() As UByte() '不支持数组返回,编译错 End Function 还有一个字符编码,常用于网页:UTF8 字符编码,那么也是用 a As String 和UTF8 相互转换函数: Utf8toStr StrToUtf8 StringWtoUtf8 Utf8toStringW
      • 2026年-1月-21日
      • 55 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic代码_字符串 2026-1-21
      VisualFreeBasic代码_字符串 字符串,通俗来说,就是一串文本数据。 需要先了解以下几个基础知识 字符串编码,分 ASCII 和 Unicode 。变量类型分别是 ZString 和 WString 可以理解为,英文字符串和中文字符串 当 ZString 和 WString 相遇,不需要我们任何操作,FB语言内部会做编码统一操作。 Dim a As ZString * 10 = "中文" Dim b As WString * 10 = "中文" If a=b Then Print "正确" ZString 和 WString 遇到数据为0 就截断字符,String 可以包含 0 。 String 和 StringW 类型是变长字符串,不需要指定长度。 字符串即时值,就是引号中的文字编码,默认为 ASCII 赋值给 WString 类型时,FB语言内部会自动转换编码后赋值。 当工程属性中,选中 Unicode 模式,此时引号中的文字编码为 Unicode 赋值给 ZString 类型时,FB内部会自动转换编码后赋值。 为了避免这样的编码转换,可以使用 Dim a As ZString * 10 = Str("中文") Dim b As WString * 10 = WStr("中文") 在英文系统中,我们写的中文字会乱码(工程默认是 ASCII 模式) Dim a As ZString * 10 = "中文" Dim b As WString * 10 = "中文" 此时打印 a和b 变量会显示乱码 因此需要下列代码,打印中文才正常显示。 Dim a As zString * 10 = WStr("中文") Dim b As WString * 10 = WStr("中文") 自从有浏览器以后,越来越多字符串编码使用 UTF8 ,此编码用 zString 类型使用。遇到要显示时,才用转换编码函数转换 ASCII 或 Unicode 来使用。没遇到显示,就 zString 类型处理。
      • 2026年-1月-21日
      • 79 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • 20
    • 21
    • 22
    • 23
    • 24
    博主栏壁纸
    博主头像 勇芳

    330 文章数
    0 评论量
    • QQ游戏大厅多开版_旧版_2012到2025版
    • 使用Sandboxie沙盒多开QQ游戏大厅
    • Sandboxie沙盒(隔离软件)
    人生倒计时
    最新评论
    链接
    • 公益·寻亲,让爱回家
    • Visual Basic6 语言和控件手册
    • CWindow类库帮助FreeBasic版
    • FreeBASIC 帮助文档中文版
    • Windows GDI 编程手册
    • Windows GDI+ 编程手册
    • SQLite3数据库API手册
    • WebBrowser控件编程手册
    • Win32API参考手册
    • Windows 编程宝典
    • WinHttp参考资料
    • WMI编程手册
    • VisualFreeBasic编程文档
    舔狗日记
    载入天数...载入时分秒...

    © 2025 勇芳软件工作室 版权所有

    ICP备案图标 浙ICP备11006222号-1 | 公安备案图标 33100402331731号

    powered by emlog 浙ICP备11006222号-1