用 CreateThread 传递参数的问题

二楼の五号 2008-08-27 12:59:21

如题,怎么传递参数啊?这个问题已经捆饶我好多个小时了。望大侠指点

'这个是 CreateThrad声明
Private Declare Function CreateThread Lib "kernel32" _
(lpThreadAttributes As Long, ByVal dwStackSize As Long, _
ByVal lpStartAddress As Long, lpParameter As Any, ByVal _
dwCreationFlags As Long, lpThreadId As Long) As Long

'这个是要传递的参数结构 (在另一个标准模块内)
Type MyParam
s as string* 50
i as integeter
end Type


'这个是要调用的线程函数 (在另一个标准模块内)
Function thMyFun(p as MyParam)

End Function

'这个是调用的地方 ,ParamTest 是窗体类里面的 变量
Call CreateThread(ByVal 0&, ByVal 0&, AddressOf myModel.thMyFun,byval varptr(ParamTest), ByVal 0&, threadid)

试了无数种方法,传不过去。



...全文
309 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2008-08-27
  • 打赏
  • 举报
回复
这我前面已经说了,myxy82 没反应。
迈克揉索芙特 2008-08-27
  • 打赏
  • 举报
回复
窗体中:
Option Explicit
Private Declare Function CreateThread Lib "kernel32" _
(lpThreadAttributes As Long, ByVal dwStackSize As Long, _
ByVal lpStartAddress As Long, lpParameter As Any, ByVal _
dwCreationFlags As Long, lpThreadId As Long) As Long

Private Sub Command1_Click()
Dim mp As MyParam
mp.s = Now
mp.i = 1
Dim ThreadID As Long
Call CreateThread(ByVal 0&, ByVal 0&, AddressOf thMyFun, ByVal VarPtr(mp), ByVal 0&, ThreadID)
End Sub


模块中:
Option Explicit
Private Declare Function MessageBox Lib "user32.dll" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long

Type MyParam
s As String * 50
i As Integer
End Type

Function thMyFun(p As MyParam) As Long
MessageBox 0, p.i, p.s, 0
End Function


你的问题出在:Function thMyFun(p As MyParam) As Long
迈克揉索芙特 2008-08-27
  • 打赏
  • 举报
回复
Function thMyFun(p as long) 

End Function

Call CreateThread(ByVal 0&, ByVal 0&, AddressOf myModel.thMyFun,varptr(ParamTest), ByVal 0&, threadid)
Tiger_Zhao 2008-08-27
  • 打赏
  • 举报
回复
DWORD WINAPI ThreadProc(
LPVOID lpParameter // thread data
);

按照上面的 MSDN 说明,lpStartAddress 对应的函数:参数4字节(指针)、返回值4字节(DWORD)。而你的 thMyFun() 返回值为16字节(Variant)。
二楼の五号 2008-08-27
  • 打赏
  • 举报
回复

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧