C++Builder

Вопросы программирования => Windows API => Тема начата: DEGroup от 18 апреля 2012, 22:26:14



Название: Создание процесса(Нитки) в отдельном классе
Отправлено: DEGroup от 18 апреля 2012, 22:26:14
Ситуация такая:
Есть обычная WIN программка
в Form1 имеем код

Код C++
 
#include <vcl.h>
...
 
HANDLE hMainNetThread = NULL;
DWORD dwNetThreadId;
DWORD WINAPI MainNetThread(LPVOID lpParam);
...
 
//---------------------------------------------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
....
  hMainNetThread = CreateThread(NULL,0,MainNetThread,0,0,&dwNetThreadId);
....
}
....
DWORD WINAPI MainNetThread(LPVOID lpParam)
{
   while(1)
    {
     ...
    }
}
}
 
Все пашет.
Теперь другая программка (с использованием своего класса)
Код C++
#include <vcl.h>
...
 
class MyClass
{
   HANDLE hMainNetThread = NULL; 
   DWORD dwNetThreadId;
 
    __fastcall MyClass(int Number)
    {
     .....
        hMainNetThread = CreateThread(NULL,0,MainNetThread,0,0,&dwNetThreadId);
Вот тут ошибка компилятора 
(E2034 Cannot convert 'unsigned long (__stdcall * (_closure )(void *))(void *)' to 'void *')
 
    }
....
    DWORD WINAPI ThreadFunction(LPVOID lpParam)
    {
    return 0;
    }
 
}
MyClass *ClassMy[MaxChannelCount];
....
void __fastcall TForm1::FormShow(TObject *Sender)
{
  for(int i= 0; i<MaxChannelCount; i++)
   {
     ClassMy = new MyClass(i);
   }
}
 
что не так то? Как обойти ошибку?


Название: Re: Создание процесса(Нитки) в отдельном классе
Отправлено: volvo877 от 18 апреля 2012, 23:29:55
Функция потока не может быть членом класса, у нее есть строго определенная сигнатура (http://msdn.microsoft.com/en-us/library/windows/desktop/ms686736%28v=vs.85%29.aspx). Либо выноси ее за пределы класса, либо делай статической
Код
static DWORD WINAPI ThreadFunction(LPVOID lpParam)
{
  // ...
}
, неявный параметр this мешает компилятору.


Название: Re: Создание процесса(Нитки) в отдельном классе
Отправлено: DEGroup от 19 апреля 2012, 09:02:19
да разобрался, просто время познее было, заработался  ;), вот голова и не варит, сам себя материл за тормознутость. Все равно спасибо!