云查杀很牛X的金山毒霸!免费啦!2011下载链接!


久违啦,我今天终于又可以写博客了,VB无所不能这个系列写作途中总是磕磕绊绊的,终于写到第七篇多线程的时候,中断了长达1个多月的时间没有更新新帖,对大家说声抱歉,由于本人这个月遇到很多棘手之事情,没有顾得上。
        好了,言归正传了,继续我们的VB无所不能之旅。
上一篇我们在《VB多线程(1)》中给大家介绍了在VB中使用多线程的两个函数,一个是“CreateThread ”另一个是“Sleep”,这两个是使用多线程时用到的Windowskernel32提供的API函数。
那么,本篇将具体用一个实例说明一下这两个函数是如何使用的。
我们上文提到,“VB的大部分控件都不是线程安全的”,因此,没有使用我们很熟悉的Text控件,我们为了完成本程序需要用到GDI函数绘图来实现多线程实现部分。
我们会用到如下GDI函数,其声明及说明如下:
获取窗体句柄的DC:

Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
设置绘制区域的背景色,也起清除作用:
Public Declare Function SetBkColor Lib "gdi32" (ByVal hdc As Long, ByVal crColor As Long) As Long

输出文本:
Public Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long

释放资源:
Public Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long

好,那么,我们开始建立程序:
步骤一:建立一个Module添加如下代码:
Declare Function GetDC Lib "user32" () Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long 
Declare Function SetBkColor Lib "gdi32" () Declare Function SetBkColor Lib "gdi32" (ByVal hdc As Long, ByVal crColor As Long) As Long 
Declare Function TextOut Lib "gdi32" Alias "TextOutA" () Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long 
Declare Function ReleaseDC Lib "user32" () Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc AsLong) As Long

Declare Function CreateThread Lib "kernel32" () Declare Function CreateThread Lib "kernel32" (lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, ByVal lpParameter As Long, ByVal dwCreationFlags As Long, lpThreadId As Long) As Long

Declare Sub Sleep Lib "kernel32" () Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

'全局的form的句柄! 
Public formhandle As Long

OutText1() OutText1()    '过程一 
        Dim i As Long 
        Dim dc As Long 
        Dim s As String 
                dc = GetDC(formhandle) '获取窗体句柄的DC 
                For i = 1 To 100000 
                        s = CStr(i) 
                        Call SetBkColor(dc, &HF0F0F0)    '设置绘制区域的背景色,也起清除作用 
                        Call TextOut(dc, 10, 10, s, Len(s)) '输出文本! 
                        Call Sleep(40) '等待 
                Next 
                Call ReleaseDC(formhandle, dc)    '释放资源!

End Sub

OutText2() OutText2()    '和过程一类似 
        Dim i As Long 
        Dim dc As Long 
        Dim s As String 
                dc = GetDC(formhandle) 
                For i = 1 To 100000 
                        s = CStr(i) 
                        Call SetBkColor(dc, &HF0F0F0) 
                        Call TextOut(dc, 10, 80, s, Len(s))    '文本位置改变了 
                        Call Sleep(20) '延时改变了 
                Next 
                Call ReleaseDC(formhandle, dc) 
End Sub

步骤二:建立一个窗体,添加如下组件,如图所示:
步骤三:在窗体中添加如下代码:
Sub Command1_Click() Sub Command1_Click() 
         
        '声明了线程ID 
        Dim threadid1 As Long 
        Dim threadid2 As Long

Call CreateThread(Null, ByVal O&, AddressOf Module1.OutText1, VarPtr(0), ByVal 0&, threadid1) 
        Call CreateThread(Null, ByVal 0&, AddressOf Module1.OutText2, VarPtr(0), ByVal 0&, threadid2) 
         
End Sub

Sub Form_Load() Sub Form_Load() 
        '保存窗体句柄全局变量,用于在form 上绘图 
        formhandle = Form1.hwnd 
End Sub

好,我们再来看运行效果,如图所示:
好了,本文实现了一个初步的多线程调用的例子,剩下的事情就请大家八仙过海各显神通了!!
本文转自 useway 51CTO博客,原文链接:http://blog.51cto.com/useway/326200,如需转载请自行联系原作者

VB无所不能之七:VB的多线程(2)相关推荐

  1. VB无所不能之五:建立“标准”DLL动态链接库文件(1)

    VB无所不能之五:建立"标准"DLL动态链接库文件(1) --作者:钟声 博客地址:http://useway.blog.51cto.com 动态链接库经常被认为是VC或者Deph ...

  2. VB无所不能之二:利用GDI+处理图像格式转换

    VB无所不能之二:利用GDI+处理图像格式转换 --作者:钟声 我今天想再续写一篇关于VB的有关文件格式转换的文章. 对于Windows编程来说,除了处理网络协议以外,处理几种类型的文件格式更加重要, ...

  3. VB→C++→C#→VB.NET,语言的共性和个性

    从当初的误打误撞学习VB之后就一发不可收拾,直到现在接触VB.NET,想想自己也经历了VB→C++→C#→VB.NET这四种计算机语言,在此并不是想说自己学语言的多少,因为语言并不在于多而在于精,很惭 ...

  4. VB.net:VB.net编程语言学习之添加引用打包安装项目的简介、案例应用之详细攻略

    VB.net:VB.net编程语言学习之添加引用&打包安装项目的简介.案例应用之详细攻略 目录 关于添加引用 1.SW的二次开发,需要引用多个Solidworks库文件即dll文件

  5. VB.net:VB.net编程语言学习之操作符(变量/常量/数据类型/声明)逻辑控制语句(条件判断/循环语句)的简介、案例应用之详细攻略

    VB.net:VB.net编程语言学习之操作符(变量/常量/数据类型/声明)&逻辑控制语句(条件判断/循环语句)的简介.案例应用之详细攻略 目录 VB.net编程语言学习之操作符/变量/常量/ ...

  6. 不同编程语言代码转换网站,在线编程语言代码转换,C#转VB.NET,VB.NET转C#

    不同编程语言代码转换网站,在线编程语言代码转换 C#转VB.NET,VB.NET转C# 推荐一个国外不错的编程代码转换网站 http://www.developerfusion.com/tools/c ...

  7. 运行中调试初计算机的命令,计算机二级 VB辅导:VB中程序的运行调试

    1.运行程序 运行程序,可用下列方法之一: (1)选择主窗口的"运行"菜单的"启动"命令. (2)按快捷键F5. (3)选择工具栏上的启动按钮. 在程序运行过程 ...

  8. 计算机vb实验感想,VB学习心得体会

    VB学习心得体会 VB学习心得体会 VB是一门程序设计语言,也需要一定的英语基础.VB既能充实我们的生活,武装我们的头脑,锻炼我们的意志,又能在以后需要的时候成为帮助我们成功的推进动力.对于VB的学习 ...

  9. VB.net:VB.net编程语言学习之基于VS软件利用VB.net语言实现对SolidWorks进行二次开发的简介、案例应用之详细攻略

    VB.net:VB.net编程语言学习之基于VS软件利用VB.net语言实现对SolidWorks进行二次开发的简介.案例应用之详细攻略 目录 调用SolidWorks功能简介 1.宏录制步骤 (1) ...

最新文章

  1. Bean装配之Aware接口
  2. 【Linux】【服务器】 CentOS7下卸载MySQL详细过程步骤
  3. 计算机管理的未来职业发展方向,职业发展方向
  4. ansible(6)——模块命令command、shell详细用法
  5. MATLAB软件禁用利好,Matlab被禁用?一款国产软件站了出来说:我就是中国的Matlab...
  6. 熬了几个大夜,学完一套985博士总结的计算机视觉学习笔记(20G高清/PPT/代码)...
  7. linux将passwd文件拷贝到,Linux命令
  8. 递归问题学习二之卡牌组合问题
  9. Java内存溢出定位和解决方案(new)
  10. python3.8.3安装时提示Detected Windows 7 SP1 without KB2533623
  11. web网络安全防护方案
  12. 大数据毕设/课设 - 基于大数据的全国疫情实时监控大屏系统设计与实现
  13. java初学者看什么书比较好
  14. iphone与计算机连接,苹果usb怎么与电脑连接_苹果怎么设置与电脑连接的图文步骤...
  15. 水桶平分 java,JAVA路线
  16. Tegra TK1中文输入法
  17. xnote1.5——WebShell
  18. KMP算法-严蔚敏数据结构
  19. 微场景是什么?如何快速制作微场景?
  20. Multimedia Timers

热门文章

  1. 淘丞相将微博链接转为淘宝直达是怎么实现的?
  2. 年轻人,你活着不是为了观察K线做布朗运动 ——从“全要素参与分配理论”谈股票市场的赚钱陷阱
  3. win2000修改主机名称
  4. 【可救砖】CM211-1/201-1等S905L3(B)_安卓9-通刷极致精简免拆语音-线刷固件及教程202208
  5. java版-五子棋-个人-源码参考
  6. The Little Match Girl,摘自iOS应用Snow White and more stories
  7. 用C#编写Visionpro相关窗体应用(.NET Framework)
  8. 好男儿当生三国 好女子当养唐朝
  9. Python爬虫——爬取壁纸
  10. dellr420部署os_dell r720服务器OS部署