程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> VC制作電子式時鐘

VC制作電子式時鐘

編輯:關於VC++

看了VC知識庫《在線雜志》第27期的“電子八段管的仿真”,確實不錯,但失真嚴重。認識咱們知識庫這麼久,學了不少東西,我也該作點"貢獻"了,於是自己動手也寫一個。本文的示例程序界面如圖一所示:

圖一

程序說明

首先建立一個基於對話框的工程,導入數碼位圖資源,直接在對話框類CMy2Dlg中添加類mytime

程序中的mytime類主要提供兩個函數接口:一個是set()用來設置顯示位置;一個是myfun()用來設置顯示數字來顯示。

class mytime
{
public:
   int change(char);
   mytime();
   ~mytime();
   CString m_time;
   void myfun(CString temp);//顯示數字字符串
   void set(CDialog *,int tnum,int tx,int ty,int tspace);//設置顯示位置
   CStatic *m_pictur[20];// 靜態圖 指針 數組
   int num;// 靜態圖個數
   int x;// 起始X坐標
   int y;// 起始Y坐標
   int space;// 各數碼之間 間距
};

主要成員函數set()和myfun():

void mytime::myfun(CString temp)
{  
   m_time=temp;
   int mynum=m_time.GetLength();
   for(int k=0;k<num-mynum;k++)//添加前面空圖標顯示
   {
     CImageList m_imgList;
     m_imgList.Create(IDB_BITMAP1,12, 1, RGB(255,255,255));//創建位圖鏈 每個位圖12像素
     HICON myico= m_imgList.ExtractIcon(10);  //取出圖標
     m_pictur[k]->SetIcon(myico);//設置顯示的圖標
   }
   for(int i=k;i<num;i++)//添加數字圖標顯示
   {
     CImageList m_imgList;
     m_imgList.Create(IDB_BITMAP1,12, 1, RGB(255,255,255));
     HICON myico= m_imgList.ExtractIcon(change(m_time[i-k]));
     m_pictur[i]->SetIcon(myico);  
   }  
}
void mytime::set(CDialog *parent,int tnum,int tx,int ty,int tspace)
{
   CMy2Dlg *mypar=(CMy2Dlg*)parent;
   for(int i=0;i<num;i++)// 刪除以前分配的
     delete *(m_pictur+i);
   // 設置各成員變量
   num=tnum; x=tx;y=ty;space=tspace;
   for(int j=0;j<num;j++)//重新分配
    m_pictur[j]=new(CStatic);
   for(int k=0;k<num;k++)
   {
     //確定顯示位置
     CRect aa1(x+k*(space+12),y,40+x+k*(space+12),40+y);
     m_pictur[k]->Create(NULL,SS_ICON,aa1,mypar,1);// 創建靜態圖標控件
     m_pictur[k]->ShowWindow(true);
   }
}

然後在CMy2Dlg類中加入CMy2Dlg::OnTimer()消息響應函數以實現時鐘功能,其它具體代碼看源碼內有詳細說明。

程序中難免有不足和BUG,歡迎指正。

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