Risolto.
In pratica serve una funzione che permetta il libero scorrimento dei messaggi:
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;
}
e chiamarla modificando il codice così:
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;
}
}