首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

有关CreateThread这个Api的有关问题

2012-09-28 
有关CreateThread这个Api的问题模块里面的代码:Private Declare Sub Sleep Lib kernel32 (ByVal dwMilli

有关CreateThread这个Api的问题
模块里面的代码:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)



Public Sub Fill1()
Dim i As Integer
For i = 0 To 255
Form1.Picture1.BackColor = RGB(i, 0, 0)
Form1.Label1.Caption = CStr(i)
Sleep 100
Next i
End Sub

Public Sub Fill2()
Dim i As Integer
For i = 0 To 255
Form1.Picture2.BackColor = RGB(0, i, 0)
Form1.Label2.Caption = CStr(i)
Sleep 100
Next i
End Sub

Form里面的代码:

Private Declare Function CreateThread Lib "kernel32" (lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadId As Long) As Long
Private Declare Function TerminateThread Lib "kernel32" (ByVal hThread As Long, ByVal dwExitCode As Long) As Long
Dim id1, id2 As Long
Private Sub Command1_Click()

id1 = CreateThread(0, 0, AddressOf Module1.Fill1, 0, 0, lpThreadId1)

id2 = CreateThread(0, 0, AddressOf Module1.Fill2, 0, 0, lpThreadId2)

End Sub




Private Sub Form_Unload(Cancel As Integer)
TerminateThread id1, 0
TerminateThread id2, 0
Unload Me
End Sub

为什么运行后form1里面的两个picture控件不能改变颜色,但是i的值是变化的。
如果不用进程的话,picture的颜色却可以改变。
求解释

[解决办法]
vb6不能用CreateThread
[解决办法]
你这个属于多线程的应用,参阅:
这里面有关于VB多线程的介绍
[解决办法]
关系到界面不能用多线程,一定要用多线程的话,得换用消息
[解决办法]
即使用消息也是安队列先后处理,只不过发送消息函数本身多线程而已,没多大意义,
还是老老实实别用多线程处理界面,

热点排行