博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
工作线程AfxBeginThread的使用
阅读量:7207 次
发布时间:2019-06-29

本文共 950 字,大约阅读时间需要 3 分钟。

工作线程通常用来执行一些后台任务,如:数据计算、后台杀毒等等。因为不需要创建窗口和处理用户消息,编写比较容易,在程序中只要调用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); 
}
 

程序运行结果:

转载地址:http://ffoum.baihongyu.com/

你可能感兴趣的文章
关于Char* ,CString ,WCHAR*之间的转换问题
查看>>
第十二天--Property List和NSUserDefaults
查看>>
JS Bin Tips and Bits • About
查看>>
Sharepoint学习笔记—习题系列--70-576习题解析 -(Q40-Q44)
查看>>
nodejs发展
查看>>
Fragment过度动画分析一
查看>>
UBI文件系统简介
查看>>
《现代操作系统》精读与思考笔记 第一章 引论
查看>>
System.out.print实现原理猜解
查看>>
每日英语:The Invasion of the Online Tutors
查看>>
codepage IMLangCodePages
查看>>
Leetcode: Valid Parentheses
查看>>
JavaScript Structure
查看>>
java 流媒体服务器Red5 FQA
查看>>
mysql--SQL编程(关于mysql中的日期) 学习笔记2
查看>>
jquery 请求jsp传递json数据的方法
查看>>
Repeater绑定事件ItemDataBound中获取数据库中数据
查看>>
草长莺飞,总归一字
查看>>
HDOJ 2097
查看>>
计算机学科漫谈
查看>>