Вы не можете создать поток, используя нестатический член функции в качестве процедуры потока: причина в том, что все нестатические методы класса имеют неявный первый аргумент, это указатель this.
Это
class foo
{
void dosomething();
};
на самом деле
class foo
{
void dosomething(foo* this);
};
. Из-за этого сигнатура функции не совпадает с той, что вам нужна для процедуры потока.Вы можете использовать статический метод в качестве потоковой процедуры и передать ему указатель this.Вот пример:
class foo
{
CWindThread* m_pThread;
HANDLE hSerial;
static UINT MyThreadProc(LPVOID pData);
void Start();
};
void foo::Start()
{
m_pThread=AfxBeginThread(MyThreadProc,(LPVOID)this);
}
UINT foo::MyThreadProc(LPVOID pData)
{
foo* self = (foo*)pData;
// now you can use self as it was this
ReadFile(self->hSerial, ...);
return 0;
}