Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: EditControl
Показать сообщение отдельно
pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Проще простого:
Код: Выделить весь код
class Thread
{
    HANDLE hthread;

    static __stdcall gmain(Thread* thr)
    {
          try
          {
                thr->main();
          }
          catch(...)
          {
                abort();
          }
    }

public:
    Thread() : hthread() {}
    ~Thread() {CloseHandle(hthread);}

    void start()
    {
          // раздельно от конструктора, чтобы дать построиться синхронно.
          // уничтожать лучше тоже синхронно, т.е. сборщиком мусора.
          // не желательно объявлять Thread автоматической переменной.
          // я про параметр просто забыл в аргументах написать
          hthread = (HANDLE)_beginthread((void(*)(void*))gmain, this, 0x1000);
    }

protected:
    virtual void main() = 0;
};

...

class MyThread : public Thread
{
    void main()
    {
           ...
    }
}

MyThread* my_thread = new MyThread();
my_thread->start();
Но по-моему, лучше сделать static MyThread::start(Thread*), которая запускает поток и вписывает его в список сборщика мусора (В своём классе я так и сделал).

Отправлено: 11:37, 22-12-2005 | #6

Название темы: EditControl