星期一, 11月 29, 2010

[MFC] Multithread

//Thread function 內容
UINT  MyThreadFun(LPVOID LParam)
{
        MyThreadInfo *pInfo1=(MyThreadInfo*) LParam;
        CTESTDlg *hWnd=(CTESTDlg*)CWnd::FromHandle(pInfo1->Wnd);
        CSliderCtrl *slider=(CSliderCtrl*)hWnd->GetDlgItem(IDC_SLIDER1);

        slider->SetLineSize(100);   // 設定 slider 大小
        for(int i=0;i<100;i++){
           slider->SetPos(i);   // 移動 slider
           Sleep(100);          // 暫停 thread
         }

         return(0);
}


//如果希望 thread function 能放在 class 中, 請宣告它為 static
class CTESTDlg : public CDialog {  
     static UINT MyThreadFun(LPVOID LParam);
};

///////////////////////////////////////////////////////////////

//Dialog按鈕程式碼
//開始 Tread
struct MyThreadInfo{
HWND hWnd;        // 紀錄產生 thread 的視窗物件
}Info1;

void CTESTDlg::OnBnClickedOk()
{
        Info1.hWnd=this->m_hWnd;   // 紀錄 Dialog 的window handle
        AfxBeginThread(MyThreadFun, (LPVOID)&Info1);
}


沒有留言: