Risolto.
In pratica serve una funzione che permetta il libero scorrimento dei messaggi:
e chiamarla modificando il codice così:codice:int PumpMessages(void) { MSG msg; while (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE) == TRUE) { if (AfxGetApp()->PumpMessage() == FALSE) { AfxPostQuitMessage(0); return FALSE; } } // let MFC do its idle processing LONG lIdle = 0; while (AfxGetApp()->OnIdle(lIdle++) == TRUE); return TRUE; }
codice:CMyDlg::OnButton1() { if (p==0) { p=1; c=AfxBeginThread(MyControllingFunction,this,0,0, CREATE_SUSPENDED, NULL); c->m_bAutoDelete=FALSE; c->ResumeThread(); return; } if(p==1) { p=0; do{ PumpMessages(); }while(WaitForSingleObject(c->m_hThread,0)!=WAIT_OBJECT_0); delete c; return; } }

Rispondi quotando