Visual C++ 程序设计案例教程
前言
Visual C++ (简称 VC++) 是微软公司推出的功能强大的 C++ 集成开发环境,它不仅是一个编译器,更是一个集代码编辑、调试、界面设计、性能分析于一体的综合性工具,学习 VC++,通常意味着学习 C++ 语言本身、Windows 操作系统 API 以及 MFC (Microsoft Foundation Classes) 或 ATL (Active Template Library) 等应用程序框架。

本教程将以 MFC 作为主要框架,因为它在桌面应用程序开发领域应用广泛,且与 Visual Studio IDE 结合得最为紧密。
第一部分:基础入门篇
第一章:Visual C++ 开发环境与第一个程序
目标: 熟悉开发环境,掌握控制台应用程序的创建、编译和运行。
核心知识点:
-
Visual Studio IDE 简介:
(图片来源网络,侵删)- 解决方案与项目: 理解它们的关系。
- 代码编辑器: 语法高亮、智能提示、代码折叠。
- 资源视图: 管理对话框、菜单、图标等资源。
- 类视图: 查看和管理类、函数、变量。
- 属性窗口: 修改类、控件、项目的属性。
-
创建第一个 C++ 程序:
-
案例:
Hello, World! -
步骤:
- 打开 Visual Studio,创建一个新的“C++ 空项目”。
- 在项目中添加一个 C++ 源文件 (
.cpp)。 - 编写简单的 C++ 代码。
- 使用 生成 (Build) 菜单编译和链接。
- 使用 调试 (Debug) 菜单运行程序。
-
关键代码:
(图片来源网络,侵删)#include <iostream> int main() { std::cout << "Hello, World!" << std::endl; return 0; }
-
第二部分:C++ 语言核心篇
目标: 巩固和深化 C++ 语言的核心知识,为 Windows 编程打下坚实基础。
第二章:C++ 面向对象编程
核心知识点与案例:
-
类与对象:
- 案例: 设计一个
Student类。 - 定义类(成员变量、成员函数)、创建对象、封装。
class Student { private: std::string name; int age; public: Student(std::string n, int a) : name(n), age(a) {} void displayInfo() { std::cout << "Name: " << name << ", Age: " << age << std::endl; } };
- 案例: 设计一个
-
继承与多态:
- 案例: 设计一个图形系统
Shape->Circle/Rectangle。 - 基类与派生类、虚函数、纯虚函数、实现运行时多态。
class Shape { public: virtual double getArea() = 0; // 纯虚函数 virtual void draw() = 0; };
class Circle : public Shape { private: double radius; public: Circle(double r) : radius(r) {} double getArea() override { return 3.14 radius radius; } void draw() override { std::cout << "Drawing a Circle." << std::endl; } };
- 案例: 设计一个图形系统
第三章:标准模板库
目标: 掌握 STL 的常用容器、算法和迭代器,提高开发效率。
核心知识点与案例:
- 容器:
- 案例: 学生信息管理系统。
std::vector(动态数组):存储学生列表。std::map(键值对):用学号作为键,快速查找学生。std::string:处理学生姓名。
- 算法:
- 案例: 对学生成绩进行排序。
- 使用
std::sort对std::vector中的学生按成绩排序。
- 迭代器:
作为容器和算法之间的桥梁,遍历和访问容器元素。
第三部分:Windows MFC 编程篇
目标: 学习使用 MFC 框架开发图形用户界面应用程序。
第四章:MFC 应用程序框架
核心知识点:
- MFC 程序的生命周期:
CWinApp: 应用程序类,管理应用程序的生命周期。CFrameWnd/CMDIFrameWnd: 框架窗口类,应用程序的主窗口。CDocument/CView: 文档/视图结构,分离数据与显示。
- MFC 消息映射机制:
- 概念: 将 Windows 消息(如鼠标点击、键盘输入)与类成员函数关联起来。
- 宏:
BEGIN_MESSAGE_MAP/END_MESSAGE_MAP/ON_COMMAND。
- 案例: 手动创建一个“最小化”的 MFC 应用程序,理解其内部结构。
第五章:对话框与控件
目标: 创建用户交互界面,并处理用户输入。
核心知识点与案例:
-
创建基于对话框的应用程序:
- 步骤: 在 Visual Studio 中选择“MFC 应用程序”,并勾选“基于对话框”。
-
常用控件:
-
案例: 简易计算器
-
控件使用:
- 静态文本: 显示标签(如“+”、“=”)。
- 编辑框: 用于输入和显示数字。
- 按钮: 用于触发加、减、乘、除、清空等操作。
-
实现步骤:
- 使用资源视图向对话框上拖放所需控件。
- 为每个编辑框和按钮创建控件变量(
m_editNum1,m_editNum2,m_btnAdd等)和控件事件处理函数(如OnBnClickedButtonAdd)。 - 在事件处理函数中编写逻辑,获取编辑框的值,进行计算,并将结果输出到另一个编辑框。
-
关键代码示例 (加法按钮点击事件):
void CMyCalculatorDlg::OnBnClickedButtonAdd() { // 获取编辑框1的值 CString strNum1; m_editNum1.GetWindowTextW(strNum1); double num1 = _ttof(strNum1); // 获取编辑框2的值 CString strNum2; m_editNum2.GetWindowTextW(strNum2); double num2 = _ttof(strNum2); // 计算并显示结果 double result = num1 + num2; CString strResult; strResult.Format(_T("%.2f"), result); m_editResult.SetWindowTextW(strResult); }
-
第六章:文档/视图结构
目标: 理解 MFC 的核心架构,开发能处理数据的应用程序。
核心知识点与案例:
- 文档/视图/框架窗口的关系:
- 文档: 存储应用程序的数据(如
CDocument派生类)。 - 视图: 负责显示文档数据,并接收用户输入(如
CView派生类)。 - 框架窗口: 包含视图,提供标准窗口功能(如最大化、最小化)。
- 文档: 存储应用程序的数据(如
- 案例: 简易绘图程序
- 功能: 用户可以用鼠标在窗口上画线。
- 实现步骤:
- 创建一个“单文档” MFC 应用程序。
- 在视图类 (
CMyView) 中处理鼠标消息 (WM_LBUTTONDOWN,WM_MOUSEMOVE,WM_LBUTTONUP)。 - 在视图类中定义一个
CPoint数组,用于存储鼠标轨迹点。 - 在
OnDraw函数中,遍历数组,使用CDC::MoveTo和CDC::LineTo将线条重绘到屏幕上。 - 将
CPoint数组作为文档数据,使其在窗口大小改变或
