5.5(2)

今天第二件任务是完成了:验证码

 

说明:验证码的上面显示的数字是 单个的,是static picture  控件,不是静态文本控件。

 

做法:

1,添加资源,添加0-9十个数字的icon图标到资源上面,注意,这个图标是有16*16的 和32*32的 后面这种图标大些,画图的时候要注意自己是画了那种icon

2  加载图标icon ,放入hicon类型的 一个数组中间;

m_icon[0] = (HICON)::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON0), IMAGE_ICON, 32, 32, 0); 
     m_icon[1] = (HICON)::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON1), IMAGE_ICON, 32, 32, 0); 
     m_icon[2] = (HICON)::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON2), IMAGE_ICON, 32, 32, 0); 
     m_icon[3] = (HICON)::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON3), IMAGE_ICON, 32, 32, 0); 
     m_icon[4] = (HICON)::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON4), IMAGE_ICON, 32, 32, 0); 
     m_icon[5] = (HICON)::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON5), IMAGE_ICON, 32, 32, 0); 
     m_icon[6] = (HICON)::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON6), IMAGE_ICON, 32, 32, 0); 
     m_icon[7] = (HICON)::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON7), IMAGE_ICON, 32, 32, 0); 
     m_icon[8] = (HICON)::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON8), IMAGE_ICON, 32, 32, 0); 
     m_icon[9] = (HICON)::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON9), IMAGE_ICON, 32, 32, 0); 

 

这里加载的是32*32的图标

 

3 添加 4个picture control 用来显示随机的数字,并添加 控件类型的变量;添加一个eidt编辑框,并添加一个控件类型的 变量;添加一个 按钮控件,用来 字迹不清晰,重新发验证码。

CEdit m_edit;
 CButton myBitmapButton;
 CStatic m_s4;
 CStatic m_s3;
 CStatic m_s2;
 CStatic m_s1;

 

4. 下面是随机产生数字,并把对应的数字显示到 icon上面

随机产生数字用到了 srand 和rand

srand((int)time(NULL)); //srand为rand产生一个种子,time()产生一个字1970年到现在的一共的时间秒
 a=rand()%10;产生一个0——9的随机数字

 if(a==0) //如果首位为0的话,判断的时候会出错,如0123 !=123

    {
        a=8;
    }只要首位产生了0,我就把他设置为8 ,吉利点
    num=a*1000;因为是四个图片,第一出来的数字为千位数
  m_s1.SetIcon(m_icon[a]);a=rand()%10;num+=a*100;百位数
  m_s2.SetIcon(m_icon[a]);a=rand()%10;num+=a*10;十位数
  m_s3.SetIcon(m_icon[a]);a=rand()%10;num+=a;个位数
  m_s4.SetIcon(m_icon[a]);

 

seticon函数是 选择把icon里面的 图片添加到picture control 控件里面去,如果a= o,那么我就添加 icon0 这个icon,上面画的字也是0;

 

5判断 用户填入的字是否和 图片的字相等

 

图片的字 对应的存到了 num中间了

 所以只要判断num和输入进来的字就可以了】

ss.Format("%d",num);
 CString text;
 m_edit.GetWindowText(text);
if(text==ss){MessageBox("确认成功!!");//PostMessage(WM_CLOSE);
}
else {MessageBox("验证码错误","验证码确认",MB_ICONSTOP);//最后一格参数是一个警告的图标

}
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

注意: 图片画的时候有32*32 HE 16*16之分

          int转为字符串 是这样子转的  cstring str;int  n;str。format(“%d”,n);

         

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值