Chinaunix首页 | 论坛 | 博客
  • 博客访问: 284328
  • 博文数量: 54
  • 博客积分: 2756
  • 博客等级: 少校
  • 技术积分: 677
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-16 22:51
文章分类

全部博文(54)

文章存档

2011年(30)

2010年(22)

2009年(2)

我的朋友

分类: C/C++

2011-07-06 16:26:18

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) |
给主人留下些什么吧!~~