一、创建线程的方法
①头文件中声明线程函数
static void ThreadFunc();
②头文件添加protected型变量:
HANDLE hThread; DWORD ThreadID; //分别代表线程的句柄和ID。
③编写线程函数
void CMultiThread1Dlg::ThreadFunc() { }
④创建线程
对话框模式的,就是oninitialdialog里
hThread=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadFunc, NULL, 0, &ThreadID);
二、线程如何获取类成员变量;
在CXXXDlg类中声明static UINT ThreadName( LPVOID lpParam );
类外:
UINT CXXXDlg::ThreadName( LPVOID lpParam ) { CXXXDlg* p = (CXXXDlg*)lpParam; 这样就能用了。 }
调用传入this
ThreadName(this);
三、常见错误
用VC创建新线程易出的问题error C2664: 'CreateThread' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *)(void *)'
解决方案:
(1)如果线程要执行的是类的成员函数,则必须用static声明为静态函数
如:
class echo { static DWORD WINAPI ThreadFunc(LPVOID pvoid) ...... ...... }