WEB开发网
开发学院软件开发VC 电子式时钟 阅读

电子式时钟

 2006-07-23 11:20:44 来源:WEB开发网   
核心提示:本文示例源代码或素材下载 看了VC知识库《在线杂志》第27期的“电子八段管的仿真”,确实不错,电子式时钟,但失真严重,认识咱们知识库这么久,其它具体代码看源码内有详细说明,程序中难免有不足和BUG,学了不少东西,我也该作点"贡献"了

本文示例源代码或素材下载

看了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,欢迎指正。

Tags:电子式 时钟

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接