《C++笔记》Part8 MFC中的AfxBeginThread的使用方法

《C++笔记》 Part8 MFC中的AfxBeginThread的使用方法

参考:
1、http://blog.csdn.net/oceanlucy/article/details/7345057
2、http://blog.csdn.net/u012370255/article/details/27639601

1、【AfxBeginThread】参数,如果只是简单的传【int】类型的

//多线程函数的定义;  
UINT Thread1(int pParam)  
{  
    int nSize = pParam;  
    //你的其他处理代码。。。  
    return 0;  
}  

//多线程的使用部分;  
int nSize = 50;  
AfxBeginThread((AFX_THREADPROC)Thread1, (VOID*)nSize , THREAD_PRIORITY_NORMAL, 0, 0, NULL);  

【AfxBeginThread】参数,如果要传多个参数或者传入结构体

//定义一个全局的结构体;  
typedef struct SthData   
{  
    int iStr;  
    int iEnd;  
}*pSthData;  

//多线程函数的定义;  
VOID Thread1(LPVOID lpParam)  
{  
    //获得结构体中的值;  
    SthData* pStcSthData = (SthData *)lpParam;  
    int iStr = pStcSthData->iStr;   
    int iEnd = pStcSthData->iEnd;  

    //你的其他处理代码。。。  

    //最后记得删除结构体的指针并指向NULL;  
    delete pStcSthData;  
    pStcSthData = NULL;  
}  

//多线程的使用部分;  
    pSthData pDataValue1 = new SthData;  
    memset(pDataValue1, 0x00, sizeof(SthData));  
    pDataValue1->iStr = 0;  
    pDataValue1->iEnd = 10;  

    AfxBeginThread((AFX_THREADPROC)Thread1, pDataValue1, THREAD_PRIORITY_NORMAL, 0, 0, NULL);  

注:结构体创建后在析构时需要:

delete pDataValue1 ;
pDataValue1 = NULL;  //防止野指针

否则在调试传参时,看到的结构体内部数据为乱码。

猜你喜欢

转载自blog.csdn.net/sinat_24206709/article/details/79239580