当前位置:编程学堂 > visual studio 2010 timer_Visual Studio 2010——第一个Visual C++.NET程序

visual studio 2010 timer_Visual Studio 2010——第一个Visual C++.NET程序

  • 发布:2023-09-26 04:48

Visual Studio 2010(VS)--消消乐定制版?--添加反应计时

上期回顾(上期主要是把原来16格,扩展到了36格的,带18组文字图形的消消乐):

本期将给他加一个计时,就是当第一次按下的时候,如果一定时间没有按第二次,就隐藏

1.0 点击左边的工具栏,找到组件下的timer定时器,双击,给程序添加定时器,默认为timer3

2.0 修改timer3的属性Interval改为2000,让他点了第一个控件显示后,等待2S

3.0 双击timer3图形,就会在代码页面生成这个定时器的代码,如下

private void timer3_Tick(object sender, EventArgs e)

{

}

4.0 在定时器timer3中,添加到时隐藏功能,具体代码如下

private void timer3_Tick(object sender, EventArgs e)

{

//定时事件到了就停止定时器

timer3.Stop();

//把刚才单击两次显示的控件覆盖隐藏

firstClicked.ForeColor = firstClicked.BackColor;

//重置引用变量,使其下次能再次记忆两次单击

firstClicked = null;

}

5.0 在单击组件的响应处理程序label_Click中,加入timer3的开启

if (firstClicked == null)

{

firstClicked = clickedLabel;//那他就跟踪当前单击的控件标签

firstClicked.ForeColor = www.sychzs.cn;//让他的前景色单独变成黑色,才能显示

timer2.Start();//游戏时间计时

timer3.Start();//单击后计时,限时隐藏

System.Media.SoundPlayer player = new System.Media.SoundPlayer(@"D:360MoveDataUsersyanjun.wangDesktopshake.wav");

www.sychzs.cn();

return;//当第一次单击后,会用return跳出这个单机响应程序

}

6.0 保存按F5调试,这时候的效果应该是,单击一个控件后,延时2S,如果没有单击第二个控件就会隐藏,如果在时间内选择了就不会隐藏

Visual Studio 2010(VS)--消消乐定制版?--添加反应计时

上期回顾(上期主要是把原来16格,扩展到了36格的,带18组文字图形的消消乐):

本期将给他加一个计时,就是当第一次按下的时候,如果一定时间没有按第二次,就隐藏

1.0 点击左边的工具栏,找到组件下的timer定时器,双击,给程序添加定时器,默认为timer3

2.0 修改timer3的属性Interval改为2000,让他点了第一个控件显示后,等待2S

3.0 双击timer3图形,就会在代码页面生成这个定时器的代码,如下

private void timer3_Tick(object sender, EventArgs e)

? ? ? ? {

? ? ? ? }

4.0 在定时器timer3中,添加到时隐藏功能,具体代码如下

private void timer3_Tick(object sender, EventArgs e)

? ? ? ? {

? ? ? ? ? ? //定时事件到了就停止定时器

? ? ? ? ? ? timer3.Stop();

? ? ? ? ? ? //把刚才单击两次显示的控件覆盖隐藏

? ? ? ? ? ? firstClicked.ForeColor = firstClicked.BackColor;

? ? ? ? ? ? //重置引用变量,使其下次能再次记忆两次单击

? ? ? ? ? ? firstClicked = null;

? ? ? ? }

5.0 在单击组件的响应处理程序label_Click中,加入timer3的开启

if (firstClicked == null)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? firstClicked = clickedLabel;//那他就跟踪当前单击的控件标签

? ? ? ? ? ? ? ? ? ? firstClicked.ForeColor = www.sychzs.cn;//让他的前景色单独变成黑色,才能显示

? ? ? ? ? ? ? ? ? ? timer2.Start();//游戏时间计时

? ? ? ? ? ? ? ? ? ? timer3.Start();//单击后计时,限时隐藏

? ? ? ? ? ? ? ? ? ? System.Media.SoundPlayer player = new System.Media.SoundPlayer(@"D:\360MoveData\Users\www.sychzs.cn\Desktop\shake.wav");

? ? ? ? ? ? ? ? ? ? www.sychzs.cn();

? ? ? ? ? ? ? ? ? ? return;//当第一次单击后,会用return跳出这个单机响应程序

? ? ? ? ? ? ? ? }

6.0 保存按F5调试,这时候的效果应该是,单击一个控件后,延时2S,如果没有单击第二个控件就会隐藏,如果在时间内选择了就不会隐藏?

实验环境:Windows XP,Visual Studio 2010 ?Ultimate

1 创建项目

? ? 1.1 文件>>新建>>项目,选择“其他语言”>>Visual C++,选中“MFC应用程序”。项目名改为“First”。如下图所示:

? ??

1.2 在上图中,单击确认后,将会弹出”MFC应用向导“,在其中的”应用程序类型“界面中,设置如下图所示。

1.3 直接点击”完成“,其他的保存默认设置即可。

2 点击菜单栏的“视图”,依次找到“解决方案资源管理器”,“工具箱”,“类视图”,“资源视图”和“属性窗口”,分别单击它们。菜单如下图所示。

创建好工程后,效果图如下图所示

3 为视图类添加颜色成员变量m_nCurColor和绘图函数DrawCircle

3.1 在“类视图”中找到CFirstView(视图类),右键单击,将会弹出一个向导,通过这个向导可以向这个类中添加变量和函数。如下图所示。

3.2 为CFirstView添加一个变量,如下图所示意。

3.3 为CFirstView添加一个函数,如下图所示。

3.4 添加定时器。

在“类视图”中右键单击,在弹出来的对话框中选择“属性”,在“属性”的上方,选择“消息”,在消息列表中找到WM_TIMER,在其右侧的下拉选项中选中OnTimer。如下图所示。

3.5 添加启动和停止按钮

3.5.1 双击“资源视图”中的Menu下的IDR_MAINFRAME,如下图所示。

3.5.2 在打开的主菜单中添加“设置”菜单,为“设置”添加“启动”和“停止”两个下拉菜单,他们的ID分别为ID_START和ID_STOP。

通过右击菜单,选择“属性”去设置。如下图所示。

3.5.3 为“启动”和“停止”添加事件处理函数。

右击“启动”,在弹出来的对话框中选择“添加事件处理程序”。如下图所示。

在弹出来的“事件处理程序向导”中,消息类型选择“COMMAND”,类列表选择CFirstView,然后单击“添加编辑”,即可在CFirstView类中

添加了一个OnStart()函数。

用同样的方法为“停止”添加事件处理函数。

4 添加代码

4.1 在CFirstView类的构造函数中,将m_nCurColor变量赋值为-1.如下所示。

CFirstView::CFirstView()

: m_nCurColor(0)

{

// TODO: 在此处添加构造代码

m_nCurColor=-1;//m_nCurColor表示当前需要让哪种颜色的灯闪烁。

}

4.2 完善刚才添加的DrawCircle函数,如下所示。

int CFirstView::DrawCircle(int CurColor, CDC* pDC)

{

pDC->Rectangle(80,80,220,440);

CRect rRect(100,100,200,200);

CRect gRect(100,210,200,310);

CRect yRect(100,320,200,420);

CBrush rBrush(RGB(255,0,0));

CBrush gBrush(RGB(0,0,255));

CBrush yBrush(RGB(255,255,0));

CBrush wBrush(RGB(255,255,255));

CBrush *pOldBrush;

if(CurColor==0)//CurColor表示当前红绿灯的颜色

{

pDC->Ellipse(&gRect);

pDC->Ellipse(&yRect);

pOldBrush=pDC->SelectObject(&rBrush);

pDC->Ellipse(&rRect);

}

else if(CurColor==1)

{

pDC->Ellipse(&rRect);

pDC->Ellipse(&yRect);

pOldBrush=pDC->SelectObject(&gBrush);

pDC->Ellipse(&gRect);

}

else if(CurColor==2)

{

pDC->Ellipse(&rRect);

pDC->Ellipse(&gRect);

pOldBrush=pDC->SelectObject(&yBrush);

pDC->Ellipse(&yRect);

}

else

{

pOldBrush=pDC->SelectObject(&wBrush);

pDC->Ellipse(&rRect);

pDC->Ellipse(&gRect);

pDC->Ellipse(&yRect);

}

pDC->SelectObject(pOldBrush);

return 0;

}

4.3 完善定时器函数OnTimer(),如下所示。

void CFirstView::OnTimer(UINT_PTR nIDEvent)

{

// TODO: 在此添加消息处理程序代码和/或调用默认值

m_nCurColor=(++m_nCurColor)%3;

Invalidate();

CView::OnTimer(nIDEvent);

}

4.4 为“启动”和“停止”添加事件处理响应。

void CFirstView::OnStart()

{

// TODO: 在此添加命令处理程序代码

SetTimer(1,1000,NULL);

}

void CFirstView::OnStop()

{

// TODO: 在此添加命令处理程序代码

KillTimer(1);

m_nCurColor=-1;

Invalidate();

}

4.5 修改OnDraw函数

OnDraw函数是创建工程的时候就已经自动生成的了。由于他的pDC参数被注释了,因此要去掉其注释。并且在//TODO下方添加代码。如下所示。

void CFirstView::OnDraw(CDC* pDC)

{

CFirstDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

if (!pDoc)

return;

// TODO: 在此处为本机数据添加绘制代码

DrawCircle(m_nCurColor,pDC);

}

5 调试

在Visual Studio 2010 主菜单中单击“启动”|“启动调试”,生成可执行文件后,在程序的运行界面上,单击我们创建的“设置”|"启动"菜单,即可看到

红绿蓝三种颜色的“灯”循环点亮/熄灭。如下图所示。

6 工程源码。http://www.sychzs.cn/detail/q1302182594/5213571。

7 本项目的运行流程分析,请看《Visual Studio 2010——MFC应用程序调用顺序分析》。

8 参考文献

荣钦科技:李淑馨,陈伟 编著.Viusal C++ 2008程序设计完全自学教程.北京:清华大学出版社,2009

吕智,马瑞力等编著.Visual C++.NET精彩编程百例.北京:中国水利水电出版社,2004

梁兴柱主编.Visual C++.NET程序设计.北京:清华大学出版社,2010

相关文章