MFC线程的使用过程大致如下:
1.创建线程
2.创建线程函数
3.结束线程
#创建线程
HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, //安全等级,一般为NULL
DWORD dwStackSize, //线程深度,一般为0
LPTHREAD_START_ROUTINE lpStartAddress, //线程函数
LPVOID lpParameter, //传递给线程函数的参数
DWORD dwCreationFlags, //线程函数的初始状态
LPDWORD lpThreadId); //线程ID
其中第五个参数常用有0或CREATE_SUSPENDED,若为0,则线程在被创建后立即执行;若为CREATE_SUSPENDED,则线程处于挂起状态,并不马上执行,直至调用函数 ResumeThread;
示例:CreateThread(NULL, 0, FuncReadImage, this, CREATE_SUSPENDED, m_IpThreadID);
#创建线程函数
DWORD _stdcall FuncReadImage(LPVOID para);
线程函数需要放在MFC类外
大部分传递的参数都是MFC类,然后在类内编写一个需要独立运行的函数。
示例:
DWORD _stdcall FuncReadImage(LPVOID para)
{
CdisplayDlg m_dlg = (CdisplayDlg)para; //通常将程序类本身传递给线程函数
while (true)
{
m_dlg->m_ReadImage(); //在线程内调用程序的功能函数
Sleep(100);
}
return 0;
}
#线程结束
void ExitThread(DWORD ExitCode)
以上为个人学习笔记,如有错误,敬请指出。