『VC++技术内幕』学习笔记(9)(2)
好了,让我们开始吧。
1)新建一个“MFC AppWizard(EXE)”程序GUESS,在选择模式时,选择基于“Dialog”模式,其它选项缺省;
2)将新建的对话框上缺省的控件全部删去(一个OK按钮,一个CANCEL按钮),然后添加一个静态文本控件、7个Edit控件和1个Button控件,右击Button控件选择Properties选项,将Caption属性设为“选号”,同样方法将静态文本控件的Caption属性设定为“电脑体育彩票选号:”;
3)右击任一Edit控件,在出现的菜单中选择“ClassWizard”;在“ClassWizard”中为7个Edit控件一一绑定Int型的变量如下:
Control Ids Type Member
IDC_BUTTON1
IDC_EDIT1 int m_num1
IDC_EDIT2 int m_num2
IDC_EDIT3 int m_num3
IDC_EDIT4 int m_num4
IDC_EDIT5 int m_num5
IDC_EDIT6 int m_num6
IDC_EDIT7 int m_num7
4)在“ClassWizard”中为Button控件添加一个处理过程,选择“Message Maps”选项卡,确定Object IDs是IDC_BUTTON1,双击Messages中的BN_CLICKED,则“ClassWizard”会自动添加一个OnButton1() 函数。
5)编辑CGuessDlg::OnButton1() ,添加以下代码
void CGuessDlg::OnButton1()
{
int temp,pnum[35],num[7]; //临时变量,临时数组
for(int i=0;i<35;i++) //共有36个数组元素
pnum[i]=i+1;
//***选号***//
for(i=0;i<7;i++)
{
srand( (unsigned)time( NULL ) );
temp=rand();
temp=temp%36+1; //得到一个1-36的数
while(pnum[temp]==0)//如果此元素以被选过则重选
{
srand( (unsigned)time( NULL ) );
temp=rand();
temp=temp%36+1;
}
num[i]=temp; //选定一个号码
pnum[temp]=0; //给该元素置0,表示已被选过,如再有视为无效。
}
//***排序***//
for(int chance=1;chance<7;chance++)
{
int position=chance; //元素排序用到的游标
for(i=0;i<7;i++){
if(num[position]>num[i]) //如果后面的元素大于前面的,就交换位置
{
temp=num[position];
num[position]=num[i];
num[i]=temp;
}
}
}
//***显示***//
m_num1=num[0];
m_num2=num[1];
m_num3=num[2];
m_num4=num[3];
m_num5=num[4];
m_num6=num[5];
m_num7=num[6];
UpdateData(FALSE); //通过变量刷新Edit控件的显示
}
//********************************************************************************
/*说明:CWnd::UpdateData()
UpdateData()的原型如下:
BOOL UpdateData( BOOL bSaveAndValidate = TRUE );
- 上一篇:『VC++技术内幕』学习笔记(10)
- 下一篇:『VC++技术内幕』学习笔记(8)