问题代码如下:
UINT MainProcess(void *pArg)
{
CNoteTranSim* cnts = (CNoteTranSim *)pArg;
cnts->GetNoteTranSim();
return 0;
}void CNoteDemoDlg::OnBnCCal()
{
// TODO: 在此添加控件通知处理程序代码
cnts.cstr = m_szInitDir;
HANDLE hThread;
hThread = AfxBeginThread(MainProcess, (void *)&cnts);
//::SetThreadPriority(hThread, THREAD_PRIORITY_HIGHEST);
::WaitForSingleObject(hThread, INFINITE);
//cnts.GetNoteTranSim();
if (0 == cnts.vcfi.size())
{
AfxMessageBox(_T("未找到相应文件,请检查选择目录是否正确!"));
((CWnd *)(this->GetDlgItem(IDC_CAL)))->EnableWindow(FALSE);
return;
}
}每次程序都会弹出“未找到相应文件”, 说明MainProcess未进行处理,或者处理尚未结束。不知事WaitForSingleObject函数未起到作用,还是我对WaitForSingleObject作用理解有问题。望达人指点。

解决方案 »

  1.   

    AfxBeginThread的返回值是CWinThread*而不是HANDLECWinThread* pThread = AfxBeginThread(MainProcess, (void *)&cnts); ::WaitForSingleObject(pTherad->m_hThread, INFINITE); if (0 == cnts.vcfi.size()) 
      

  2.   


    用了确实好使。另外我想额外问一下HANDLE是一个整型值,标示资源的唯一性。我的问题是这个标示不是它所代表资源的内容地址吗?如果不是的话是不是每个资源都有一个唯一的HANDLE,还是每个类型的资源有一个唯一的HANDLE?多谢了。
      

  3.   

    HANDLE是由系统随即分配的不重复的可以唯一标示某一个对象的无意义的Long。和地址没关系。
    资源都有各自的HANDLE