首页 > 学院 > 开发设计 > 正文

启动线程

2019-11-06 08:20:55
字体:
来源:转载
供稿:网友
//启动线程void CZRSCapDlg::StartScreen(){DWord ThreadID;    hThread=CreateThread(NULL,  0,  (LPTHREAD_START_ROUTINE)ThreadFunc,  this,  0,  &ThreadID);

}

//线程

UINT WINAPI CZRSCapDlg::ThreadFunc(LPVOID pParam){CZRSCapDlg *pDlg = (CZRSCapDlg *)pParam;//使用pDlg引用全局的变量或函数,这些变量和函数最好的独有使用

}

本人的使用:

UINT WINAPI CZRSCapDlg::ThreadFunc(LPVOID pParam){CZRSCapDlg *pDlg = (CZRSCapDlg *)pParam;int yuv,mp4;av_register_all();avdevice_register_all();char* yuvName = NULL;char* mp4Name = NULL;if(pDlg->m_Order == "orderStart"){CString strDir,strName;strDir = pDlg->m_filePath;if(strDir.Right(1) != "//")strDir += "//";strDir = strDir + pDlg->m_StudentID;pDlg->m_StudentMP4Name = strDir;if (!PathIsDirectory(strDir)){CreateDirectory(strDir, 0);//不存在则创建}strDir += "//";std::vector<CString> fileList;CFileFind   f; BOOL   bFind=f.FindFile(strDir+pDlg->m_StudentID+"*.zrv");   while(bFind)   {bFind   =   f.FindNextFile(); CString fileNum ,filename;filename = f.GetFileName();filename.Trim();filename = filename.Left(filename.GetLength()-4);fileNum = filename.Right(2);fileList.push_back(fileNum); } f.Close();sort(fileList.begin(), fileList.end(), SortbyNumASC);if(fileList.size()>0)strName = fileList.at(fileList.size()-1);if(strName != ""){CString strStuID;CString yuvNameTemp, mp4NameTemp;strStuID = strName;int strStuNum = atoi(strStuID);int i;for(i=1;i<=pDlg->m_ScreenCounts;i++){ strStuNum++;if(i!=pDlg->m_ScreenCounts){pDlg->m_FreamCount = 300*10;//1分钟转换一次}else{pDlg->m_FreamCount = pDlg->m_Time%300*10;}pDlg->m_flagCount = i;CString str;if(strStuNum < 10)str.Format("0%d",strStuNum);elsestr.Format("%d",strStuNum);yuvNameTemp = pDlg->m_StudentID;mp4NameTemp = pDlg->m_StudentID;yuvNameTemp = yuvNameTemp + str + ".yuv";mp4NameTemp = mp4NameTemp + str + ".mp4";yuvNameTemp = strDir + yuvNameTemp;mp4NameTemp = strDir + mp4NameTemp;yuvName  =  (char*)(LPCTSTR)yuvNameTemp;mp4Name  =  (char*)(LPCTSTR)mp4NameTemp;yuv = pDlg->screen_to_yuv420p(yuvName);if(yuv != 0){return -1;}mp4 = pDlg->yuv420p_to_mp4(yuvName,mp4Name);if(mp4 != 0){return -1;}DeleteFile(yuvNameTemp);//修改文件名CFileFind find;CString newName;newName = mp4NameTemp.Left(mp4NameTemp.GetLength()-4);newName = newName + ".zrv";MoveFile(mp4NameTemp,newName);}//pDlg->m_FreamCount = 0;//pDlg->m_ScreenCounts = 0;pDlg->zipMP4File();}else{int i;CString yuvNameTemp, mp4NameTemp;for(i=1;i<=pDlg->m_ScreenCounts;i++){ if(i!=pDlg->m_ScreenCounts){pDlg->m_FreamCount = 300*10;//5分钟转换一次}else{pDlg->m_FreamCount = pDlg->m_Time%300*10;}pDlg->m_flagCount = i;CString str;if(i < 10)str.Format("0%d",i);elsestr.Format("%d",i);yuvNameTemp = pDlg->m_StudentID;mp4NameTemp = pDlg->m_StudentID;yuvNameTemp = yuvNameTemp + str + ".yuv";mp4NameTemp = mp4NameTemp + str + ".mp4";yuvNameTemp = strDir + yuvNameTemp;mp4NameTemp = strDir + mp4NameTemp;yuvName  =  (char*)(LPCTSTR)yuvNameTemp;mp4Name  =  (char*)(LPCTSTR)mp4NameTemp;yuv = pDlg->screen_to_yuv420p(yuvName);if(yuv != 0){return -1;}mp4 = pDlg->yuv420p_to_mp4(yuvName,mp4Name);if(mp4 != 0){return -1;}//pDlg->m_StudentMP4Name = mp4NameTemp;//pDlg->OnBnClickedZipButton();DeleteFile(yuvNameTemp);//DeleteFile(mp4NameTemp);//修改文件名CFileFind find;CString newName;newName = mp4NameTemp.Left(mp4NameTemp.GetLength()-4);newName = newName + ".zrv";//find.FindFile(mp4NameTemp);//find.GetFileName();MoveFile(mp4NameTemp,newName);}//pDlg->m_FreamCount = 0;//pDlg->m_ScreenCounts = 0;pDlg->zipMP4File();}}return 0;}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表