Листинг 1. Заголовок класса CMandelApp
class CMandelApp : public CWinApp, public CArrayNetFsa
{
public:
CMandelApp();
// Overrides
...
virtual BOOL OnIdle(LONG lCount);
//}}AFX_VIRTUAL
...
};
Листинг 2. Реализация метода OnIdle
BOOL CMandelApp::OnIdle(LONG lCount)
{
CWinApp::OnIdle(lCount);
OnIdleFsa(lCount);
return TRUE;
}
Вернуться к статье
Листинг 3. Реализация метода OnTimer
void CMainFrame::OnTimer(UINT nIDEvent)
{
CMDIFrameWnd::OnTimer(nIDEvent);
((CFairApp*)AfxGetApp())->OnIdleFsa(0);
}
Вернуться к статье
Листинг 4. Реализация метода OnCreate
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
...
if (!SetTimer(1, 0, NULL))
{
MessageBox(_T("Not enough timers available for this window."),
_T("Thermo:Asutp"), MB_ICONEXCLAMATION | MB_OK);
return -1;
}
return 0;
}
Вернуться к статье
Листинг 5. Модифицированный класс CMandelView.
class CFMandelView : public CView
{
private:
...
int m_Row;
int m_RowMax;
...
}
CFMandelView::CFMandelView()
{
// TODO: add construction code here
m_Col = 0;
m_CR = (float)CRMIN;
m_Row = 0;
CI = (float)CIMAX;
}
void CMandelView::DrawCol ()
{
CClientDC ClientDC (this);
int ColorVal;
float I;
float ISqr;
float R;
float RSqr;
if (m_Col >= m_ColMax || GetParentFrame ()->IsIconic ())
return;
if (m_Row < m_RowMax)
{
R = (float)0.0;
I = (float)0.0;
RSqr = (float)0.0;
ISqr = (float)0.0;
ColorVal = 0;
while (ColorVal < NMAX && RSqr + ISqr < 4)
{
++ColorVal;
RSqr = R * R;
ISqr = I * I;
I *= R;
I += I + CI;
R = RSqr - ISqr + m_CR;
}
ClientDC.SetPixelV (m_Col, m_Row, ColorTable [ColorVal % 6]);
CI -= m_DCI;
++m_Row;
}
if (m_Row >= m_RowMax) {
m_Col++;
m_CR += m_DCR;
m_Row = 0;
CI = (float)CIMAX;
}
}
Вернуться к статье
Листинг 6. Автоматный класс отображения CMandelView.
extern CMandelApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CMandelView construction/destruction
extern LArc TableFSA[];
CMandelView::CMandelView(): LFsaAppl(TableFSA)
{
...
FLoad(theApp.pNetFsa,1);
theApp.pNetFsa->go_task();
}
...
//===================================================================
// F S A
//===================================================================
LArc TableFSA[] = {
LArc("S1", "S1", "--","y1"),
LArc()
};
void CMandelView::y1()
{
...
}
void CMandelView::y2() { DrawCol(); }
|