实验环境: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://download.csdn.net/detail/q1302182594/5213571。

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

8 参考文献

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

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

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

Visual Studio 2010——第一个Visual C++.NET程序相关推荐

  1. 使用Visual Studio 2010 创建简单的Silverlight应用程序

    使用Visual Studio 2010 创建简单的Silverlight应用程序 Silverlight是创建动态的引人的RIAs(Rich Internet Application)的新方法.这里 ...

  2. Visual Studio 2010开发AutoCAD 2012 .net 应用程序调试时断点不起作用

    AutoCAD 2012系列产品很快就要正式发布了,对于.net 开发者来说,VS2010无疑是最好用的工具,所以也有好多人在VS2010和AutoCAD 2012 beta版上做开发测试.你在开发时 ...

  3. 需要更新的以前的visual studio 2010实例Microsoft Visual Studio 2010 Service Pack 1(exe)

    安装2012的时候假如出现这个错误:需要更新的以前的visual studio 2010实例. 那么安装一下Microsoft Visual Studio 2010 Service Pack 1(ex ...

  4. 给Visual Studio 2010中文版添加Windows Phone 7模板

    给Visual Studio 2010中文版添加Windows Phone 7模板(解决Express版本只有英文语言的 (方法一): 装了WP7的SDK,会自动安装Visual Studio Exp ...

  5. Visual Studio 2010 Ultimate敏捷功能特性(上)

    随着软件开发日趋国际化,对软件的质量要求和管理也随之增高.微软看到了应用程序生命周期管理在业界逐渐被接受认可的趋势,并宣称VSTS2010将会是一个革命性的.Net软件开发以及管理工具的产品,预计在2 ...

  6. ASP.NET 4 和 Visual Studio 2010 Web 开发概述

    声明:本文是ASP.NET 白皮书 ASP.NET 4 and Visual Studio 2010 Web Development Overview 的阅读摘要,只是本人的学习记录,并非完整翻译,仅 ...

  7. Visual Studio 2010中C++项目升级指南

    如何升级? Visual Studio 2010支持来自VC6.Visual Studio 2002.Visual Studio 2003.Visual Studio 2005和Visual Stud ...

  8. 【转】【UML】使用Visual Studio 2010 Team System中的架构师工具(设计与建模)

    Lab 1: 应用程序建模 实验目标 这个实验的目的是展示如何在Visual Studio 2010旗舰版中进行应用程序建模.团队中的架构师会通过建模确定应用程序是否满足客户的需求. 你可以创建不同级 ...

  9. 为Visual Studio 2010添加HTML5的项目模板

    HTML5时代来了,还不为你的Visual Studio 2010添加HTML5的项目模板!!! 本文在简单不过了,就是为你的Visual Studio2010创建一个项目模板,一个HTML5的项目模 ...

最新文章

  1. Javascript跨域后台设置拦截
  2. 为什么要划分物料组_SAP
  3. JS常用的表单验证(数字、长度,汉字,邮箱,手机号,身份证等)
  4. Vue 2.0 入门系列(15)学习 Vue.js 需要掌握的 es6 (2)
  5. 注册表文件(*.reg)的编写及应用
  6. java 改为matlab_用面向对象的方法将一段JAVA代码转化为matlab
  7. 如何启用sqlplus的AutoTrace功能
  8. mysql ocp考试准备多久_MySQL 5.7OCP考试经验分享。
  9. 5分钟商学院学习笔记
  10. matlab clc,close,close all,clear,clear all,clf 作用区别
  11. 作品交流:调制解调-勘误情况
  12. css画横线箭头_CSS绘制箭头
  13. 游戏的革命:手机定位游戏
  14. python画立体爱心_Python画3D心形
  15. 讨伐Zookeeper
  16. PHP函数计算中英文字符串长度的方法
  17. L1-033 出生年-PAT 团体程序设计天梯赛 GPLT
  18. 观小林coding图解网络总结
  19. c# 利用AForge.NET组件操作摄像头
  20. 【php毕业设计】基于php+mysql+apache的课程网站管理系统设计与实现(毕业论文+程序源码)——课程网站管理系统

热门文章

  1. 图片服务器部署(docker部署和分离部署)
  2. GetMessage TranslateMessage DispatchMessage 和PeekMessage
  3. 华为Linux版笔记本销量情况,HUAWEI 华为 MateBook X Pro(2019)笔记本电脑 (i5-8265U、8GB、512GB、Linux)...
  4. C++多态及重载(overload),覆盖(override),隐藏(hide)的区别
  5. 汇信助力顺利通过海关AEO高级认证
  6. equalsIgnoreCase() 方法
  7. Android各种屏幕分辨率(VGA、HVGA、QVGA、WQVGA、WVGA、FWVGA) 详解 .
  8. Mac 上 设置 语音呼出Siri
  9. Java基于Redis实现分布式锁(原子性操作、续命)——90%以上都搞错了
  10. 用c语言设计一个年历系统流程图,用C语言编写一个年历.docx