工作線程AfxBeginThread的使用


工作線程通常用來執行一些后台任務,如:數據計算、后台殺毒等等。因為不需要創建窗口和處理用戶消息,編寫比較容易,在程序中只要調用AfxBeginThread 函數就可以創建並啟動一個工作線程了。

AfxBeginThread 的原型如下:

CWinThread *AfxBeginThread( 
    AFX_THREADPROC pfnThreadProc,                             //指向控制函數的地址   
    LPVOID pParam,                                                       //指向傳遞給控制函數的參數   
     int   nPriority  /* = THREAD_PRIORITY_NORMAL */  ,       //指定線程的優先級   
    UINT nStackSize  /* = 0 */  ,                                        //指定堆棧大小   
    DWORD dwCreateFlags  /* = 0 */  ,                              //創建標識   
    LPSECURITY_ATTRIBUTES lpSecurityAttrs  /* = NULL */       //安全屬性   
)  

從上面參數可以看到,只有前兩個參數是必須的,其余參數都使用默認的話,就可創建了一個具有普通優先級別的線程。

示例:編寫一個應用程序,當在程序窗口按下鼠標左鍵,啟動一個線程,該線程可以在屏幕上顯示一個信息框。
1.新建單文檔程序;
2.在視圖類CPP文件添加一個准備作為線程的函數:

UINT MessageThread(LPVOID pParam) 

    LPTSTR    pMessage = (LPTSTR)pParam; 
    CWnd *pMainWnd = AfxGetMainWnd(); 
    ::MessageBox(pMainWnd->m_hWnd, pMessage, _T( "Thread Message"  ), MB_OK); 
     return    0  
}  

3.在視圖類的鼠標左鍵消息響應函數中創建和啟動線程:

void   CThreadTestView::OnLButtonDown(UINT nFlags, CPoint point) 

    AfxBeginThread(MessageThread, _T( "Greetings from your thread!"  )); 
    CView::OnLButtonDown(nFlags, point); 
}  

程序運行結果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM