一个对话框里的动圆
作者:浮萍工作室 王哲

下载本文示例源代码

一、新建一个基于对话框的程序
二、删除static 将确定改为颜色。
三、在dlg头文件里用class wizard添加以下消息映射

afx_msg void OnExitButton();

afx_msg void OnDestroy();

afx_msg void OnTimer(UINT nIDEvent);

afx_msg void OnDrawButton();

四、在头文件声明如下两个变量

int m_Radius;

int m_direction;

五、各函数如下:

////////////////////////

//石油大学

//浮萍工作室(Float WorkStudio)王传章(王哲)

//arswan@sina.com  http://sunapple.51.net

///////////////////////

void CGraphDlg::OnExitButton()

{

   OnOK();

  

}

 

void CGraphDlg::OnDestroy()

{

           CDialog::OnDestroy();

       

       KillTimer(1);

          

}

//////////////循环控制

void CGraphDlg::OnTimer(UINT nIDEvent)

{

    //MessageBox("s");

        m_Radius=m_Radius+m_direction;

        if(m_Radius>=100)

        {

               m_direction=-1;

        }

        if(m_Radius<=10)

        {

               m_direction=1;

        }

        Invalidate();

        CDialog::OnTimer(nIDEvent);

}

 

void CGraphDlg::OnDrawButton()

{

        dlg.DoModal();

 

}

六、在函数初始化里加入:

int iInstallresult;

iInstallresult=SetTimer(1, 50, NULL);

if(iInstallresult==0)

{

        MessageBox("cannot install timer!");

}

colordlg dlg;

dlg.m_RedRadio=0;

m_Radius=50;

m_direction=1;

完成定时器的安装。

七、在OnPaint()里的else下内容改为:

CPaintDC dc(this);

CPen MyNewPen;

COLORREF mm_color=dlg.m_color;

MyNewPen.CreatePen(PS_SOLID,10,mm_color);//RGB(255,0,0)

CPen* pOriginalPen;

pOriginalPen=dc.SelectObject(&MyNewPen);

CRect MyRectangle(30,10,20+m_Radius*2,10+m_Radius*2);

dc.Ellipse(&MyRectangle);

dc.SelectObject(pOriginalPen);

CDialog::OnPaint();


八、别忘了 建立一个colordlg 来控制线条颜色 当然你还可以自己添加很多东西。

怎么样? 一个动圆是不是出来了?