AfxBeginThread из класса
UINT CMyE::A( LPVOID pParam){
MessageBox("Ku-Ku");
return 0;
}
UINT CMyE::B(){
AfxBeginThread(CMyE::A,NULL); //Как запустить новый поток? из функции-члена класса, причем поток должен выполняться другой функцией-членом класса. Как здесь, но на такое написание компилятор ругается.
return 0;
}
прототип вызова
AfxBeginThread(MyThreadProc, pNewObject);
где ф-ия MyThreadProc дожна быть типа:
UINT MyThreadProc( LPVOID pParam );
и, я так понимаю, она не может быть членом класса.
Цитата:
Originally posted by matwey
Есть к примеру класс CMyE он имеет к примеру две функции
UINT CMyE::A( LPVOID pParam){
MessageBox("Ku-Ku");
return 0;
}
UINT CMyE::B(){
AfxBeginThread(CMyE::A,NULL); //Как запустить новый поток? из функции-члена класса, причем поток должен выполняться другой функцией-членом класса. Как здесь, но на такое написание компилятор ругается.
return 0;
}
Есть к примеру класс CMyE он имеет к примеру две функции
UINT CMyE::A( LPVOID pParam){
MessageBox("Ku-Ku");
return 0;
}
UINT CMyE::B(){
AfxBeginThread(CMyE::A,NULL); //Как запустить новый поток? из функции-члена класса, причем поток должен выполняться другой функцией-членом класса. Как здесь, но на такое написание компилятор ругается.
return 0;
}
Надо объявить функцию A как static.
Функция потока должна быть как статичная. Либо сделай глобальный указатель на функцию и присвой ему нужное значение.
Цитата:
Originally posted by sercher
Функция потока должна быть как статичная. Либо сделай глобальный указатель на функцию и присвой ему нужное значение.
Функция потока должна быть как статичная. Либо сделай глобальный указатель на функцию и присвой ему нужное значение.
Всем спасибо, все работает, я вобщем то почти сразу сам дагодался, извините что оторвал.