UINT FileLoad();
static UINT __stdcall FileLoad(LPVOID pParam)
{
return ((CTsPlayerDlg*)pParam)->FileLoad() ;
} 我写的线程回调函数m_hFileThread= CreateThread(NULL, 0, CTsPlayerDlg::FileLoad, \
this, 0, NULL);
编译不能过去,说什么CreateThread的第三个参数类型不匹配,各位大哥看看这是
怎么回事?
static UINT __stdcall FileLoad(LPVOID pParam)
{
return ((CTsPlayerDlg*)pParam)->FileLoad() ;
} 我写的线程回调函数m_hFileThread= CreateThread(NULL, 0, CTsPlayerDlg::FileLoad, \
this, 0, NULL);
编译不能过去,说什么CreateThread的第三个参数类型不匹配,各位大哥看看这是
怎么回事?
你可以这样创建:
在头文件中
public:
CWinThread *m_ProcessThread;
static UINT OnProcessThread(LPVOID Param);
在cpp文件中
...
m_ProcessThread=AfxBeginThread(OnProcessThread,0,THREAD_PRIORITY_NORMAL,0,0);
...
UINT CTlView::OnProcessThread(LPVOID Param)
{
//要回调的函数
}
static UINT __stdcall FileLoad(LPVOID pParam)
{
return ((CTsPlayerDlg*)pParam)->FileLoad() ;
}
定义错误!!!!
这样try:
// file TsPlayerDlg.h
public:
UINT CTsPlayerDlg::FileLoad();
//file TsPlayerDlg.cpp
static UINT __stdcall CTsPlayerDlg::FileLoad(LPVOID pParam)
{
return ((CTsPlayerDlg*)pParam)->FileLoad() ;
}
你弄得太乱了。
要不直接将m_hFileThread= CreateThread(NULL, 0, CTsPlayerDlg::FileLoad, \
this, 0, NULL);改成:
m_hFileThread= CreateThread(NULL, 0, FileLoad, \
this, 0, NULL);
如果你想用CTsPlayerDlg::FileLoad()函数直接作为线程执行函数的话,你就用我第一次说的方法,不过函数实现的改一下
static UINT __stdcall CTsPlayerDlg::FileLoad(LPVOID pParam)
{
//return ((CTsPlayerDlg*)pParam)->FileLoad() ; //这一行得去掉,改成你的函数体
}