MFC 下比较简单:
.h 头文件中声明线程函数:
UINT ThreadProc(LPVOID param);(类外)
CWinThread* pThread; (public)
struct ThreadInfo
{
CString k;
};
.cpp 文件中:
ThreadInfo Info;
pThread = AfxBeginThread(ThreadInfo, &Info); //创建
UINT ThreadProc(LPVOID param) //实现
{
ThreadInfo * pInfo = (ThreadInfo *)param;
CString p = pInfo->k;
AfxMessageBox(p);
}
API 的话相对麻烦:
//***************************
// no parameter
//***************************
.h 头文件中
HANDLE hThread;
DWORD dwThreadId;
DWORD WINAPI ThreadProc(LPVOID lpParam);
.cpp 文件中
hThread = (HANDLE)_beginthreadex( NULL, 0, &ThreadProc, NULL, 0, &threadID );
WaitForSingleObject( hThread, INFINITE );
//***************************
// parameter
//***************************
.h 头文件中
HANDLE hThread;
DWORD threadId;
struct ThreadInfo
{
CString k;
};
DWORD WINAPI ThreadProc(LPVOID lpParam);
.cpp 文件中
unsigned param = 10;
hThread = (HANDLE)_beginthreadex( NULL, 0, &ThreadProc, (LPVOID)¶m, 0, &threadID );
WaitForSingleObject(hThread, INFINITE);
综上,MFC直接调用线程函数即可。其传递参数可为多个。
而 API 目前只做了传递整形这块。