程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> VC實現一個對話框裡的動圓

VC實現一個對話框裡的動圓

編輯:vc教程

  一、新建一個基於對話框的程序

  二、刪除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)王傳章(王哲)
//[email protected] 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 來控制線條顏色 當然你還可以自己添加很多東西。

  怎麼樣? 一個動圓是不是出來了?

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved