没有合适的资源?快使用搜索试试~ 我知道了~
基于c/c++的MFC的多线程
4星 · 超过85%的资源 需积分: 19 57 下载量 54 浏览量
2011-06-03
10:18:28
上传
评论
收藏 136KB DOC 举报
温馨提示
试读
57页
MFC的多线程 1、创建和终止线程 在MFC程序中创建一个线程,宜调用AfxBeginThread函数。该函数因参数不同而具有两种重载版本,分别对应工作者线程和用户接口(UI)线程。 工作者线程 CWinThread *AfxBeginThread( AFX_THREADPROC pfnThreadProc, //控制函数 LPVOID pParam, //传递给控制函数的参数 int nPriority = THREAD_PRIORITY_NORMAL, //线程的优先级 UINT nStackSize = 0, //线程的堆栈大小 DWORD dwCreateFlags = 0, //线程的创建标志 LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL //线程的安全属性 ); 工作者线程编程较为简单,只需编写线程控制函数和启动线程即可。下面的代码给出了定义一个控制函数和启动它的过程: //线程控制函数 UINT MfcThreadProc(LPVOID lpParam) { CExampleClass *lpObject = (CExampleClass*)lpParam; if (lpObject == NULL || !lpObject->IsKindof(RUNTIME_CLASS(CExampleClass))) return - 1; //输入参数非法 //线程成功启动 while (1) { ...// } return 0; }
资源推荐
资源详情
资源评论
1、创建和终止线程
在 MFC 程序中创建一个线程,宜调用
AfxBeginThread 函数。该函数因参数不同
而具有两种重载版本,分别对应工作者线
程和用户接口(UI)线程。
工作者线程
CWinThread *AfxBeginThread(
AFX_THREADPROC pfnThreadProc, //
控制函数
LPVOID pParam, //传递给控制函数的参
数
int nPriority =
THREAD_PRIORITY_NORMAL, // 线 程
的优先级
UINT nStackSize = 0, //线程的堆栈大小
DWORD dwCreateFlags = 0, //线程的创
建标志
LPSECURITY_ATTRIBUTES
lpSecurityAttrs = NULL //线程的安全属性
);
工作者线程编程较为简单,只需编写
线程控制函数和启动线程即可。下面的代
码给出了定义一个控制函数和启动它的过
程:
//线程控制函数
UINT MfcThreadProc(LPVOID lpParam)
{
CExampleClass *lpObject =
(CExampleClass*)lpParam;
if (lpObject == NULL || !lpObject-
>IsKindof(RUNTIME_CLASS(CExampleC
lass)))
return - 1; //输入参数非法
//线程成功启动
while (1)
{
...//
}
return 0;
}
//在 MFC 程序中启动线程
AfxBeginThread(MfcThreadProc,
lpObject);
UI 线程
创建用户界面线程时,必须首先从
CWinThread 派 生 类 , 并 使 用
DECLARE_DYNCREATE 和
IMPLEMENT_DYNCREATE 宏声明此类。
下 面 给 出 了 CWinThread 类 的 原 型
(添加了关于其重要函数功能和是否需要
被继承类重载的注释):
class CWinThread : public CCmdTarget
{
DECLARE_DYNAMIC(CWinThread)
public:
// Constructors
CWinThread();
BOOL CreateThread(DWORD
dwCreateFlags = 0, UINT nStackSize = 0,
LPSECURITY_ATTRIBUTES
lpSecurityAttrs = NULL);
// Attributes
CWnd* m_pMainWnd; // main
window (usually same AfxGetApp()-
>m_pMainWnd)
CWnd* m_pActiveWnd; // active main
window (may not be m_pMainWnd)
BOOL m_bAutoDelete; // enables
'delete this' after thread termination
// only valid while running
HANDLE m_hThread; // this thread's
HANDLE
operator HANDLE() const;
DWORD m_nThreadID; // this
thread's ID
int GetThreadPriority();
BOOL SetThreadPriority(int
nPriority);
// Operations
DWORD SuspendThread();
DWORD ResumeThread();
BOOL PostThreadMessage(UINT
message, WPARAM wParam, LPARAM
lParam);
// Overridables
//执行线程实例初始化,必须重写
virtual BOOL InitInstance();
// running and idle processing
//控制线程的函数,包含消息泵,一般
不重写
virtual int Run();
// 消 息 调 度 到 TranslateMessage 和
DispatchMessage 之前对其进行筛选,
//通常不重写
剩余56页未读,继续阅读
peking003
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Android的学生信息管理2.rar
- 3e9ef566-ba13-47b0-a252-77aa9e4b040f8412130.apk
- 毕业设计基于SSM的房屋租赁系统源【源码+lw+部署+讲解】
- 基于Android男装出口管理系统的app.rar
- 工资表生成工资条Excel模版
- 位运算、状态压缩、枚举子集汇总.html
- C++毕业设计快递分拣机器人系统源码+论文文件+资料.zip
- 锐龙处理器 体质分析工具,体质越好越稳定,越容易超频 tool1007/Win V/F
- IOS Swift3 四种单例模式详解及实例《PPT文档》
- Swin-Unet网络预训练模型,swin-tiny-patch-window7-224.pth
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页