工作线程AfxBeginThread的使用
原文链接地址:http://blog.csdn.net/akof1314/article/details/5761689
工作线程通常用来执行一些后台任务,如:数据计算、后台杀毒等等。因为不需要创建窗口和处理用户消息,编写比较容易,在程序中只要调用AfxBeginThread 函数就可以创建并启动一个工作线程了。
AfxBeginThread 的原型如下:
CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOID pParam, int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL ); CWinThread* AfxBeginThread( CRuntimeClass* pThreadClass, 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); }
程序运行结果:
天道酬勤 循序渐进 技压群雄