工作线程AfxBeginThread的使用
来源:互联网 发布:内网动态域名解析 知乎 编辑:程序博客网 时间:2024/06/05 17:29
工作线程通常用来执行一些后台任务,如:数据计算、后台杀毒等等。因为不需要创建窗口和处理用户消息,编写比较容易,在程序中只要调用AfxBeginThread函数就可以创建并启动一个工作线程了。
AfxBeginThread的原型如下:
CWinThread *AfxBeginThread(
AFX_THREADPROC pfnThreadProc, //指向控制函数的地址
LPVOID pParam, //指向传递给控制函数的参数
int nPriority /* = THREAD_PRIORITY_NORMAL */, //指定线程的优先级
UINT nStackSize /* = 0 */, //指定堆栈大小
DWORD dwCreateFlags /* = 0 */, //创建标识
LPSECURITY_ATTRIBUTES lpSecurityAttrs /* = NULL */ //安全属性
)
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;
}
{
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);
}
{
AfxBeginThread(MessageThread, _T("Greetings from your thread!"));
CView::OnLButtonDown(nFlags, point);
}
程序运行结果:
- 工作线程AfxBeginThread的使用
- 工作线程AfxBeginThread的使用
- 工作线程AfxBeginThread的使用
- 工作线程AfxBeginThread的使用
- 工作线程AfxBeginThread的使用
- 线程AfxBeginThread的使用
- 用户界面线程AfxBeginThread的使用
- 用户界面线程AfxBeginThread的使用
- 用户界面线程AfxBeginThread的使用
- 用户界面线程AfxBeginThread的使用
- 用户界面线程AfxBeginThread的使用
- 用户界面线程AfxBeginThread的使用
- 用户界面线程AfxBeginThread的使用
- 用户界面线程AfxBeginThread的使用
- AfxBeginThread创建线程的用法
- 如何用AfxBeginThread安全的创建线程
- AfxBeginThread: Worker线程的创建和结束
- 熟悉工作线程的使用
- INPUT、TEXTAREA以及DIV中控制光标的位置
- 感觉真好!
- 操作excel表格和删除文件目录下所有文件
- 电话号码正则表达式
- C++
- 工作线程AfxBeginThread的使用
- linux下 opendiameter的编译
- Jquery调用webservice
- cookie 保存用户名密码
- 进程,线程,应用程序。概念理解
- 进程,线程,应用程序。概念理解
- Jquery中的事件和动画
- wine source insight
- 进程,线程,应用程序。概念理解2