您的位置:首页 > 编程语言 > C语言/C++

Win32多线程 线程函数必须为静态的解决方案

2016-10-08 10:23 597 查看

Win32多线程 线程函数必须为静态的解决方案

public:

CProgressCtrl m_ctrlProgress;

//线程调用函数
static DWORD WINAPI ThreadFuncRead(LPVOID pcdlg);
static DWORD WINAPI ThreadFuncWrite(LPVOID pcdlg);


在头文件中线程函数的定义必须为静态的,但是这样就会出现一个问题,如何调用非静态的变量与函数?

解决方案:在创建线程的时候传入this指针

hThrd1=CreateThread(NULL,0,ThreadFuncRead,this,0,&threadId); //创建一个线程 传入this指针 指向当前这个对象

然后在线程函数中对传入的this指针强转类型,即可使用非静态成员和函数。

DWORD CFileDlg::ThreadFuncRead(LPVOID pcdlg)

{

CFileDlg the=(CFileDlg)pcdlg;

}

在静态函数中是没有默认的this指针的,this指针只存在于普通成员函数中。如果没有显示的传入,静态函数是没有直接使用this指针。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐