MFC 全局函数 AfxBeginThread
函数功能描述:创建新的线程
函数原型:
CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOID pParam, int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL );
CWinThread* AfxBeginThread( CRuntimeClass* pThreadClass, int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL );
返回值:
指向新创建的线程对象。
参数:
pfnThreadProc:工作线程的函数指针,不可以为空。
pThreadClass: 从CWinThread类继承来的对象的RUNTIME_CLASS指针。
pParam: 传递给工作线程函数pfnThreadProc的参数。
nPriority: 线程的优先级。如果为0,则与创建它的线程优先级相同。可以通过参考Win32 Programmer’s Reference中的SetThreadPriority得到所有可用的优先级列表和描述。
nStackSize: 以字节为单位指定新线程的堆栈大小。如果为0,则与创建它的线程的堆栈大小相同。
dwCreateFlags:指定一个额外的标志控制线程的产生。
AfxBeginThread创建一个新的CWinThread对象,调用它的CreateThread函数开始执行线程并且返回指向线程的指针。
.h文件
static UINT ThreadProc(LPVOID pParam); //接收数据的线程
.cpp文件
CClientDlg *pDlg;//声明对话框全局句柄
AfxBeginThread(&ThreadProc, m_pSocket, THREAD_PRIORITY_NORMAL);//创建线程
UINT CClientDlg::ThreadProc(LPVOID lpram) //接收数据的线程
{
TCPSocket *m_pSocket = (TCPSocket *)lpram;//对传入的参数处理
while(true)
{
memset(&packet, 0, sizeof(packet));
TRY
{
m_pSocket->Recv((char*)&packet,sizeof(packet)); //接收数据
pDlg->CreateUserList(&obList); //使用句柄调用函数
}
CATCH (CFileException, e)
{
AfxMessageBox(_T("读入chatter链表错误"));//使用MFC全局的对话框
}
END_CATCH
}
return 1;
}
int AfxMessageBox( LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0 );//lpszText表示在消息框内部显示的文本,消息框的标题为应用程序的可执行文件名
如果用MFC的话,请尽量使用afxmessagebox,因为这个全局的对话框最安全,也最方便。
但是在WIN32 SDK的情况下只能使用MESSAGEBOX。
阅读(1361) | 评论(0) | 转发(0) |