MFCでマルチスレッドを作成する方法をよく忘れてしまいます。
毎回調べるのが面倒なので記述しておきます。
(Visual Studio 6.0版)
(1)Thread_smpDlg.cpp : OnInitDialog() の中に追加する
BOOL CThread_smpDlg::OnInitDialog()
{
~
 // TODO: 特別な初期化を行う時はこの場所に追加してください。
// ■↓ここから追加
 ThreadInit();
 // ■↑ここまで
 return TRUE;  // TRUE を返すとコントロールに設定したフォーカスは失われません。
}
(2)Thread_smpDlg.h : の protected: の下に追加する
protected:
 HICON m_hIcon;
~
// ■↓ここから追加
private:
//-----------------------------
// テーブル宣言
//-----------------------------
 HANDLE m_hEventStop;
 CWinThread* m_pThread;
//-----------------------------
// スレッドエントリー
//-----------------------------
static UINT ThreadEntry(LPVOID pParam)
{
    CThread_smpDlg* pHogeHoge = (CThread_smpDlg*)pParam;
 // 自オブジェクトの取得
   
    return pHogeHoge->ThreadProc();
  // スレッド処理
}
//-----------------------------
// スレッド処理
//-----------------------------
UINT ThreadProc(void)
{
    // 終了イベントがセットされるまでループ
    while ( ::WaitForSingleObject(m_hEventStop, 0) == WAIT_TIMEOUT )
    {
  // ■ここに処理を書く
    }
    return 0;
}
//-----------------------------
// スレッド初期化
// OnInitDialog() からコールする
//-----------------------------
void ThreadInit()
{
    m_hEventStop = ::CreateEvent(NULL, TRUE, FALSE, NULL);
    m_pThread = NULL; // スレッドオブジェクトのポインタクリア
    ASSERT(m_pThread == NULL);
   
    // サスペンド状態でスレッドを作成
    m_pThread = ::AfxBeginThread(ThreadEntry, (LPVOID)this,
 THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED, NULL);
    m_pThread->m_bAutoDelete = FALSE;
 // 自動破棄フラグクリア
    m_pThread->ResumeThread();
  // サスペンド解除
}
 // ■↑ここまで