Можно сделать примерно так:
class CMainFrame
{
// ...
private:
HANDLE m_hDrawEvent;
};
CMainFrame::CMainFrame()
{
m_hEventDrawed = ::CreateEvent( 0, FALSE, FALSE, _T("Моё событие для рисования") );
}
void CMainFrame::OnПоказатьДиалог()
{
CMyDialog dlg(this);
dlg.m_hEventDrawed = m_hEventDrawed;
dlg.DoModal();
}
class CMyDialog
{
// ...
public:
HANDLE m_hEventDrawed;
};
void CMyDialog::Где-тоТам()
{
DoImage();
CMainFrame* pAppFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd;
pAppFrame->Invalidate(false);
WaitForSingleObject( m_hEventDrawed, INFINITE );
}
И никакого дремучего леса.
Удачи.
Дмитрий.