闲话少说,直接进入主题。
首先声明线程函数:
static unsigned long __stdcall PlayThread(LPVOID pData) ; //LPVOID pData为所要传入的参数,如果没有也可以设为void
线程函数实体:
unsigned long __stdcall CPlateDemoDlg::PlateThread(LPVOID pData) // 博主是在对话框中创建的线程,所以最好传入这个对话框的句柄
{
CPlateDemoDlg *pDlg = (CPlateDemoDlg*)pData ; // 根据传入对话框句柄来创建句柄实例
。
。
return 0;
}
创建线程:
DWORD dwThreadId = 0 ;
HANDLE m_threadHandle ;
m_threadHandle = CreateThread(NULL,0,PlateThread,(LPVOID)this,0,&dwThreadId) ; // (LPVOID)this就是当前对话框的句柄,这时线程就已经创建了
这是创建和使用线程的整个过程,虽然简单,但是很实用。当使用完这个线程后记得要使用CloseHandle(m_threadHandle) ; m_threadHandle = NULL ;来释放句柄内存。如果代码中有用到while()循环来处理操作而又比较复杂不容易跳出循环的,则最好用线程来实现。比如传输文件的进度显示,虽然用定时器也可以实现,但是定时器的优先级比较低,很容易被其他优先级高的操作替换掉,所以还是使用线程来实现比较妥当。