Проблема с AfxBeginThread

  • Автор темы rules
  • Дата начала
Статус
Закрыто для дальнейших ответов.
R

rules

Я использовал эту функцию для запуска потока

Код:
void CTest2Dlg::onOK() 
{
// TODO: Add extra validation here
AfxBeginThread(run, this);


}

UINT CTest2Dlg::run(LPVOID p)
{
CTest2Dlg * me = (CTest2Dlg *)p;
  me->run();
return 0; 
}

void CTest2Dlg::run()
{
while(1)
{
.......... 
}



}


Но после того как переустановил винду и наново поставил VC на тот же код компилятор выдает ошибку

error C2665: 'AfxBeginThread' : none of the 2 overloads can convert parameter 1 from type 'unsigned int (void *)'

При чем старые файли, те которые пахали, и пашут и компилируются!!!
Ниче не погу понять. Помогите кто может!
 
D

Dr.Gigabit

Идея правильная.... Вот из MSDN :

Код:
UINT MyThreadProc( LPVOID pParam )
{
   CMyObject* pObject = (CMyObject*)pParam;

   if (pObject == NULL ||
       !pObject->IsKindOf(RUNTIME_CLASS(CMyObject)))
   return 1;   // if pObject is not valid

   // do something with 'pObject'

   return 0;   // thread completed successfully
}

// inside a different function in the program
.
.
.
pNewObject = new CMyObject;
AfxBeginThread(MyThreadProc, pNewObject);

Хотя я бы избавился от 2-й функции run - лучше уж start() тогда от беды подальше:)
 
K

klizardin

Хотя я бы избавился от 2-й функции run - лучше уж start() тогда от беды подальше

Небольшой намек на то что данная функция, может быть функцией класса, но тогда статической
т.к. все знают, что не статические функции получают указатель на обьект this. :)
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!