142上位机VC MFC仿彩票号码生成器
142上位机VC MFC仿彩票号码生成器
功能展示
彩票号码是随机生成的,我们当前例程也简单模仿号码生成软件,效果如图,点击开始数字随机不断变更,点击停止,随机生成的五号进行重复性判断,然后进行升序处理,最后将结果显示出来; 要点提示 随机生成数字可以用函数int rand(),要想随机生成指定范围内的数字可以通过形式 i = rand()%m_nRange+1; 来实现,其中m_nRange为要指定的数字范围,I为生成的随机数;
实现功能 1.新建基于对话框的应用程序 2.拖拽五静态控件,ID修改为IDC_NUM0,IDC_NUM1, IDC_NUM2, IDC_NUM3, IDC_NUM4,用于显示随机生成的数字; 3.添加变量 CFont m_Font;//随机数显示字体 CStatic* m_Lists[5];//随机数显示的窗口指针
int num[5]; //随机数存储 UINT m_nRange; //随机数数据范围 并在OnInitDialog()函数中初始化 - m_Font.CreateFont(-24,-20,0,0,600,0,0,0,DEFAULT_CHARSET,
- OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, FF_ROMAN,"宋体");
- m_nRange = 24;
- m_Lists[0] = (CStatic*)GetDlgItem(IDC_NUM0);
- m_Lists[1] = (CStatic*)GetDlgItem(IDC_NUM1);
- m_Lists[2] = (CStatic*)GetDlgItem(IDC_NUM2);
- m_Lists[3] = (CStatic*)GetDlgItem(IDC_NUM3);
- m_Lists[4] = (CStatic*)GetDlgItem(IDC_NUM4);
复制代码4.随机数显示的字体设置可以在OnCtlColor()函数中实现 if(nCtlColor==CTLCOLOR_STATIC) { pDC->SetBkMode(TRANSPARENT);pDC->SelectObject(&m_Font); }
5.添加两按钮实现开始与停止随机数的生成 - void CGkbc8Dlg::OnStart()
- {
- for (int i=1; i<6;i++)
- {
- SetTimer(i,10,NULL);
- }
- }
复制代码- void CGkbc8Dlg::OnStop()
- {
- CString str,text;
- //避免重复
- for (int i=1; i<6;i++)
- {
- KillTimer(i);
- m_Lists[i-1]->GetWindowText(text);
- num[i-1] = atoi(text);
- for(int j=i-2;j>=0;j--)//出现重复数字,重获随机数
- {
- if(num[i-1]==num[j])//第二位起,后位与前位数相同时
- {
- num[i-1] = rand()%m_nRange+1;
- str.Format("%02i",num[i-1]);
- m_Lists[i-1]->SetWindowText(str);
- i=0;
- }
- }
- }
- int iTemp; // 升序排列
- for(i=1;i<6;i++)
- {
- for(int j=4;j>=i;j--)
- {
- if(num[j]<num[j-1])
- {
- iTemp = num[j-1]; num[j-1] = num[j]; num[j] = iTemp;
- }
- }
- }
- for(i=0;i<5;i++) { str.Format("%02i",num[i]); m_Lists[i]->SetWindowText(str); }
- }
复制代码添加定时器处理函数,实现连续生成不同随机数
我们来演示下功能实现的整个过程
|