typedef struct { std::vector files; CDataController* pDataControler; CMainFrame* pParent; } ThreadLoadFilesData; UINT ThreadLoadFiles( LPVOID pParam ) { CoInitialize(NULL); theApp.GetCrashHandler().SetThreadExceptionHandlers(); ThreadLoadFilesData* pData = (ThreadLoadFilesData*) pParam; if ( pData ) { CDataController* pDataControler = pData->pDataControler; if ( pData->pParent ) pData->pParent->PostMessage(MSG_UPDATE_PROGRESS_BAR, (WPARAM) 0); if ( pDataControler && pData->files.size() > 0 ) { for ( int i = 0; i < pData->files.size(); i++ ) { pDataControler->LoadStripXml(pData->files[i]); if ( pData->pParent ) { int nPos = (100. / (double) pData->files.size()) * ( i + 1 ); pData->pParent->PostMessage(MSG_UPDATE_PROGRESS_BAR, (WPARAM) nPos); } } pDataControler->SetActiveStripIndex(pDataControler->GetStripCount() - 1); } if ( pData->pParent ) { pData->pParent->PostMessage(MSG_UPDATE_PROGRESS_BAR, (WPARAM) 0); pData->pParent->PostMessage(MSG_UPDATE_VIEWS); } } delete pData; return 0; }