ワーカースレッド

いちばん簡単なスレッドらしい。
実際、簡単にできました。
スレッドを開始するには、AfxBeginThread関数を利用してスレッドを開始します。
この関数については、MSDNに詳しく載っていますので、簡単に書きます。
AfxBeginThread()関数
CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOID pParam);
引数説明
pfnThreadProc スレッドを処理する関数のポインタ。NULLは不可
pParam pfnThreadProcに渡す引数
本来はもっと引数がありますが、簡単に使う分には必要ないので省略(省略可能な引数だし)。
ちなみに、省略可能な部分は、スレッドのプライオリティや、セキュリティを指定できます。

pfnThreadProcに指定する関数は以下の書式で無ければいけません。
pfnThreadProcに渡す関数の書式
UINT MyControllingFunction( LPVOID pParam )
引数説明
pParam コールバック関数に渡す引数
といった具合です。
この関数内に記述したものがスレッドとして動くようです。
たとえば、引数にスレッド用のクラスのポインタを渡してスレッドとして動作させることが可能です
ちょっとした例
//プロトタイプ宣言
UINT WorkerThread( LPVOID pParam );

class HogeThread{
public:
    HogeThread(){
    }
    ~HogeThread(){
    }
    void Start(){
        ・・・処理・・・
        delete this;
    }
}

・・・・・
UINT WorkerThread( LPVOID pParam ){
    ・・・・
    HogeThread *pThreadObject = (HogeThread)pParam;
    ・・・・
}

class HogeMain{
・・・
    void ThreadStart(){
        HogeThread *pThreadObject = new HogeThread();
        AfxBeginThread(&WorkerThread, pThreadObject);
    }
}
こんな感じでやればスレッドとしてとりあえず動く。
・・・とりあえず・・・