Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, orefkov, Вы писали:
O>>При создании потока передавай MainWnd в функцию потока параметром
А>m_hWnd? я пробырал передватвать через параметр в функции LPVOID ptr потом преобразовую к m_hWnd.
//
CreateThread(NULL,0,OnWorker,m_hWnd,0,0);
// вот проблемная функция
WORD WINAPI OnWorker(LPVOID ptr)
{
CBISBackuperDlg *ftr=(CBISBackuperDlg*)AfxGetMainWnd();
int count=ftr->m_log.GetCount();
if(ftr->coutpath==0){
return 0;
}
for(int t=0;t<count;t++){
ftr->m_log.DeleteString(0);
}
ftr->m_progress.SetPos(0);
for(int i=0;i<ftr->coutpath;i++){
if((ftr->CopyDirTree(ftr->arpath[i],ftr->arpath[i++]))==1){ // CopyDirTree(..) резервирует данные
ftr->m_log.AddString(ftr->arpath[i]); // заполнение отчета
ftr->m_log.AddString(ftr->arpath[i++]); // заполнение отчета
ftr->Logger(ftr->arpath[i],ftr->arpath[i++]); // функция для заполения лога.
}
else {
CString sterout;
CString sterin;
sterout.Format("%s %s",ftr->arpath[i],"Неудачно");
sterin.Format("%s %s",ftr->arpath[i++],"Неудачно");
}
ftr->m_progress.StepIt();
}
ftr->m_progress.SetPos(0);
KillTimer(ftr->m_hWnd,69);
return 1;
}
// функция для заполения лога.
void CBISBackuperDlg::Logger(CString pathout,CString pathin)
{
fstream file;
file.open(fdate,ios::out|ios::binary|ios::app);
if(!file){
return;
}
file<<pathin;
file<<pathout;
file.close();
}
Как мне выйти из положение?

Может есть какой то аналог потоков, но с возможностью использования MFC. Или можно както выйти из моего положения не уходя от даного потока.