第1章 · 学前准备 — 1.1 Windows 桌面开发环境搭建讲课用时建议约 90 分钟含演示与答疑适合人群零基础或有其他语言经验、未接触过 Visual Studio 的学员学习目标学完本节后你将能够独立完成 VS 安装、MFC 组件配置并成功创建运行第一个 MFC 项目。目录课前说明为什么环境搭建这么重要Visual Studio 的选择与安装MFC 组件选装详解项目模板与目录结构动手练习创建并运行第一个项目常见问题排查课后作业一、课前说明为什么环境搭建这么重要很多初学者会跳过这一节直奔代码结果发现程序编译不过报了一堆看不懂的错误找不到 MFC 项目模板运行程序时提示缺少 DLL不知道哪个文件该改、哪个不该动这些问题归根结底都是环境没搞对。环境搭建就像盖房子打地基 — 地基歪了后面的一切都会出问题。本节的目标就是让每个人手里的开发环境完全一致且正确这样后续课程中大家遇到的问题才是同一个问题方便统一解答。二、Visual Studio 的选择与安装2.1 选哪个版本Visual Studio 有多个版本先帮大家理清版本是否免费是否支持 MFC适合谁Community社区版✅ 免费✅ 支持个人开发者、学生、小团队Professional专业版❌ 付费✅ 支持企业开发Enterprise企业版❌ 付费✅ 支持大型团队VS Code✅ 免费❌ 不支持 MFC不适合本课程结论我们使用 Visual Studio Community 2022免费且功能完全够用。如果你的电脑上已经安装了 VS 2019 或 VS 2017也可以使用界面大同小异。本教程以 VS 2022 为准。讲师提示如果学员电脑配置较低可以安装 Visual Studio 2019它对老机器更友好。但功能差异很小不影响教学。2.2 去哪里下载访问微软官方下载页面https://visualstudio.microsoft.com/zh-hans/downloads/找到Visual Studio Community 2022点击「免费下载」。下载完成后你会得到一个叫VisualStudioSetup.exe的安装程序。⚠️注意事项不要从第三方下载站下载可能捆绑了修改过的安装包。安装文件只有约 2-3 MB它是一个在线安装器真正的组件会在安装过程中从网络下载。2.3 安装步骤图文全流程步骤一运行安装器双击VisualStudioSetup.exe如果弹出用户账户控制UAC窗口点击「是」。步骤二选择工作负荷安装器启动后你会看到「工作负荷」选项卡。这是最关键的一步你需要勾选✅「使用 C 的桌面开发」这个工作负荷会包含MSVC微软 C 编译器Windows SDKC 基础工具调试器讲课重点给学员 2 分钟时间找到这个选项并勾选。等所有人都勾好了再继续。步骤三确认 MFC 组件这一步最容易遗漏勾选「使用 C 的桌面开发」后不要直接点安装。在右侧的「安装详细信息」面板中你会看到一个可展开的列表。找到并确保勾选✅「适用于 v143 生成工具的 C MFCx86 和 x64」如果你用的是 VS 2019名称里会是 v142VS 2017 则是 v141。数字代表工具集版本号。⚠️血的教训这是整节课最容易翻车的地方很多学员装完 VS 后发现没有 MFC 项目模板就是因为忘了勾这个。回头补装又要再等半小时。讲师可以带着学员做一遍找到「使用 C 的桌面开发」点击右侧「安装详细信息」的下拉箭头滚动找到 MFC 选项确认前面有 ✓步骤四选择安装位置可选点击顶部的「单个组件」或「语言包」选项卡可以根据需要调整。一般来说保持默认即可。如果 C 盘空间紧张可以在这个界面底部修改「安装位置」但要注意核心组件SDK、编译器、运行时必须放在固态硬盘上工作负荷和共享组件可以放在其他盘 建议学员至少给 C 盘预留30 GB空间一个完整的 C 桌面开发环境大约占用 10-15 GB。步骤五开始安装点击右下角「安装」按钮。安装器会开始下载并安装所有选中的组件。这个阶段一般需要20-40 分钟取决于网速和电脑性能。建议利用这段时间——浏览一下 VS 的官方文档预习一下本课程的下一节让自己放松一下步骤六首次启动安装完成后系统可能会提示重启。重启后从开始菜单启动Visual Studio 2022。首次启动会让你登录微软账号可以跳过但建议登录以便同步设置选择开发设置 → 选择「C」主题选择颜色主题 → 深色或浅色随喜好现在你的 VS 已经准备好了接下来我们验证 MFC 是否安装成功。三、MFC 组件选装详解3.1 验证 MFC 是否安装成功打开 Visual Studio 后我们快速验证一下点击「创建新项目」在搜索框中输入MFC你应该能看到以下三个模板模板名称用途MFC 应用创建标准 MFC 桌面应用程序MFC ActiveX 控件创建可在网页或 VB 中使用的控件MFC DLL创建 MFC 动态链接库如果看不到这些模板 → 说明 MFC 组件没有安装。需要回到安装器补装见 3.2 节。3.2 补装 MFC 组件如果你之前安装了 VS 但没装 MFC打开Visual Studio Installer开始菜单里搜索找到已安装的 VS 2022点击「修改」勾选「使用 C 的桌面开发」在右侧展开列表勾选「适用于 v143 生成工具的 C MFC」点击右下角「修改」等待安装完成约 5-15 分钟3.3 不同工具集版本的 MFCVS 安装完成后你的电脑上可能同时存在多个版本的 MFC 库工具集版本对应 VS 版本MFC 版本号库文件位置v143VS 202214.3xVC\Tools\MSVC\14.3x.xxxxx\atlmfcv142VS 201914.2xVC\Tools\MSVC\14.2x.xxxxx\atlmfcv141VS 201714.1xVC\Tools\MSVC\14.1x.xxxxx\atlmfc概念解释「工具集」Toolset就是编译器 链接器 标准库 MFC 库的套装。一次 VS 安装可以包含多个工具集创建项目时可以选择用哪个。我们课程统一使用 v143最新版。3.4 MFC 库的两种形态MFC 编译出来有两种形式形态特点文件后缀何时使用动态链接程序调用 mfc14x.dllexe 体积小.dll开发调试阶段、一般发布静态链接MFC 代码嵌入 exe 内文件大.lib独立发布、不需要附带 DLL在 VS 项目属性中可以通过「MFC 的使用」选项在两者之间切换。我们暂时使用默认的「在共享 DLL 中使用 MFC」即可后续章节会详细对比。3.5 MFC 组件全家福除了 MFC 核心库安装时还会获得这些附加成果MFC 头文件afxwin.h、afxext.h、afxcmn.h等 — 编程时#include的入口MFC 库文件.lib和.dll— 链接时需要的二进制MFC 源码在atlmfc\src\mfc目录下 — 高级阶段调试和学习的宝藏MFC 向导Wizard你在新建项目时看到的配置对话框MFC 工具如资源编辑器Resource Editor可直接拖拽设计界面四、项目模板与目录结构4.1 新建第一个 MFC 项目让我们一步步创建一个项目来观察目录结构。① 启动向导VS 菜单 → 文件 → 新建 → 项目选择「MFC 应用」项目名称HelloMFC位置选择一个方便找到的文件夹建议D:\MFC_Projects解决方案名称和项目名保持一致即可点击「创建」② MFC 应用程序向导这一步你会看到一个多页面的向导。不要害怕我们只改两处其他全部默认。应用程序类型页面选择「基于对话框」 ← 这是我们第一个程序的类型MFC 使用方式保持「在共享 DLL 中使用 MFC」点击「完成」讲课提示此时可以先不解释每个选项的含义让学员跟着点就行。等 4.2 节讲解目录结构时再回头解释。③ 项目生成完毕向导完成后VS 会自动生成一系列文件。你会在右侧的「解决方案资源管理器」中看到它们。4.2 解决方案 vs 项目很多初学者会混淆这两个概念解决方案 (Solution) ← 一个 .sln 文件 ├── 项目 A ← 一个 .vcxproj 文件比如你的 MFC 程序 ├── 项目 B ← 另一个 .vcxproj比如一个 DLL 库 └── 项目 C ← 又另一个比如单元测试概念比喻对应文件解决方案一个「大文件夹」装着所有相关项目HelloMFC.sln项目一个「独立的产出物」比如一个 exe 或 dllHelloMFC.vcxproj简单的程序只有一个项目但企业级软件通常一个解决方案下有多个项目。现在我们只需要一个项目就够了。4.3 逐文件解析目录结构创建完HelloMFC后你的磁盘上会生成以下文件。我们按重要程度从高到低来看HelloMFC/ ← 解决方案目录 ├── HelloMFC.sln ← 解决方案文件双击它打开整个项目 │ ├── HelloMFC/ ← 项目子目录 项目名称 │ ├── HelloMFC.vcxproj ← 项目文件定义编译选项、源文件列表等 │ ├── HelloMFC.vcxproj.filters ← 文件过滤器VS 里看到的虚拟文件夹 │ ├── HelloMFC.vcxproj.user ← 用户级设置每个开发者不同不提交到 Git │ │ │ ├── HelloMFC.h ← ★ 主头文件声明 CHelloMFCApp 类 │ ├── HelloMFC.cpp ← ★ 主源文件InitInstance 等入口逻辑 │ ├── HelloMFCDlg.h ← ★ 对话框头文件声明对话框类 │ ├── HelloMFCDlg.cpp ← ★ 对话框源文件按钮点击等业务逻辑 │ │ │ ├── pch.h ← 预编译头加速编译通常包含 afxwin.h │ ├── pch.cpp ← 预编译头的 cpp只有一行 #include pch.h │ │ │ ├── framework.h ← MFC 框架头汇总自动生成一般不用改 │ ├── targetver.h ← Windows 版本目标定义 │ ├── Resource.h ← ★ 资源 ID 定义菜单、按钮、对话框的 ID │ │ │ ├── HelloMFC.rc ← ★ 资源文件对话框布局、图标、字符串表 │ └── res/ ← 资源子文件夹 │ ├── HelloMFC.ico ← 程序图标 │ └── HelloMFC.rc2 ← 手动维护的资源一般不动 │ ├── Debug/ ← Debug 编译输出运行时自动生成 └── x64/ ← x64 编译输出运行时自动生成4.4 你需要关心的核心文件51 法则作为初学者你 90% 的时间只和这 6 个文件打交道文件干什么用类比HelloMFCDlg.h定义对话框类成员变量、成员函数声明遥控器的说明书HelloMFCDlg.cpp实现对话框的行为按钮点击做什么遥控器的实际电路HelloMFC.h应用程序类声明不常改HelloMFC.cppInitInstance— 程序启动的入口逻辑车钥匙HelloMFC.rc界面布局可视化编辑装修设计图Resource.h控件 ID 编号表房间的门牌号记住动手写代码主要在*Dlg.h和*Dlg.cpp中拖拽界面在.rc文件中给控件起名字在Resource.h中。4.5 解决方案资源管理器怎么看VS 右侧的资源管理器里你看到的可能是「虚拟文件夹」而不是磁盘上的实际目录解决方案 HelloMFC (1/1 项目) └── HelloMFC ├── 应用程序 ← 虚拟分组对应 App 类 ├── 对话框 ← 虚拟分组对应 Dlg 类 ├── 资源文件 ← 虚拟分组对应 .rc / Resource.h / res\ │ ├── HelloMFC.rc │ └── HelloMFC.ico ├── 头文件 ← 虚拟分组所有 .h ├── 源文件 ← 虚拟分组所有 .cpp └── 预编译头 ← 虚拟分组这些分组由.vcxproj.filters文件定义不影响编译纯粹方便浏览。双击任何一个文件它会在左侧的代码编辑区打开。讲师提示可以带学员做一个实验 — 在文件资源管理器和 VS 的解决方案资源管理器之间来回对比帮助理解虚拟文件夹和真实目录的对应关系。五、动手练习创建并运行第一个项目讲到这里该让学员自己动手了。以下操作建议讲师在投影仪上先演示一遍然后学员跟着做。5.1 创建项目文件 → 新建 → 项目 → MFC 应用名称MyFirstMFC位置选一个好找的文件夹应用程序类型 →基于对话框点击「完成」5.2 运行程序点击顶部工具栏的绿色 ▶ 按钮或按F5程序会编译并运行。你会看到一个空白的小窗口弹出标题栏写着「MyFirstMFC」。这只有几百行自动生成的框架代码但它已经是一个完整可运行的 Windows 桌面程序了它甚至自带标题栏的最小化 / 最大化 / 关闭按钮默认的「确定」和「取消」按钮窗口拖动功能5.3 做一个小修改体会开发流程我们来给窗口加点东西体验一下 MFC 的开发循环在解决方案资源管理器中双击MyFirstMFC.rc再双击Dialog文件夹下的对话框你会看到对话框设计器— 一个可视化编辑界面从左侧「工具箱」中拖一个Static Text静态文本控件到对话框上右键这个控件 → 属性 → 把Caption改成你好这是我的第一个 MFC 程序再拖一个Button按钮进来把Caption改成点我双击这个按钮VS 会自动跳转到MyFirstMFCDlg.cpp并生成一个点击处理函数在生成的函数体中写一行代码voidCMyFirstMFCDlg::OnBnClickedButton1(){AfxMessageBox(_T(你成功点击了按钮));}按 F5 运行点击「点我」按钮 — 弹出了消息框恭喜你已经完成了第一个 MFC 交互程序。虽然简单但这里面包含了控件拖放、属性修改、事件响应三大核心操作后续的所有复杂程序都是这套流程的扩展。5.4 关闭程序 vs 停止调试点窗口的关闭按钮✕→ 程序正常退出点 VS 工具栏上的红色 ■ → 强制停止调试时用六、常见问题排查这一节请学员标记好后面遇到问题先来这里找答案。Q1新建项目时找不到 MFC 模板原因安装 VS 时没有勾选 MFC 组件。解决打开 Visual Studio Installer → 找到 VS → 修改 → 勾选「使用 C 的桌面开发」→ 确认右侧列表中的 MFC 已勾选 → 修改。Q2编译时提示「找不到 afxwin.h」或类似错误原因同上MFC 组件未安装或不完整。解决同上。Q3运行时提示「找不到 mfc140u.dll」原因你的程序链接了 MFC 动态库但目标机器上没有安装对应的 VC 运行库。解决二选一安装 Visual C Redistributable推荐适合分发程序项目属性 → MFC 的使用 → 改为「在静态库中使用 MFC」程序变大但无需外部 DLLQ4F5 运行后窗口一闪而过原因程序正常执行完毕后退出了或者有个别错误导致 crash。解决如果是基于对话框的程序不会一闪而过如果一闪而过说明你可能选了错误的模板类型可以在return FALSE;前面打一个断点逐行检查Q5修改了代码但运行结果没变原因项目没有重新编译。解决使用「生成 → 重新生成解决方案」代替直接按 F5。按 F5 只编译改动过的文件有时 VS 检测不到改动。Q6资源编辑器打不开 .rc 文件原因某些文件关联出了问题。解决右键.rc文件 → 打开方式 → 选择「资源视图编辑器」。不要用文本编辑器直接打开.rc文件。Q7安装进度条卡住不动原因网络问题或磁盘空间不足。解决检查 C 盘是否还有 30 GB 以上关闭杀毒软件断开 VPN如果持续卡住取消后重新运行安装器七、课后作业学完本节后请独立完成以下任务作业一环境检查必做打开 VS → 创建新项目 → 确认能看到 MFC 模板新建一个基于对话框的 MFC 项目名称随意编译运行确保窗口能正常弹出截图发到群里证明环境已就绪作业二界面小实验选做在对话框上拖放 3 种不同的控件文本、按钮、编辑框给按钮添加点击事件点击按钮时用AfxMessageBox弹出编辑框中输入的文字提示获取编辑框文字用GetDlgItemText或者先用「添加变量」向导绑定一个CString变量作业三目录探索选做找到你项目的实际文件夹用记事本打开.vcxproj文件观察一下它的 XML 结构不需要完全看懂只是建立感性认识找出Debug文件夹里生成的.exe文件下一节预告1.2 C 核心语法回顾 — 我们会快速过一遍继承、虚函数、智能指针等你在 MFC 中天天打交道的 C 特性。本节完 · 有任何问题请随时在课堂上举手或在课后群里提问
第1章 · 学前准备 — 1.1 Windows 桌面开发环境搭建
第1章 · 学前准备 — 1.1 Windows 桌面开发环境搭建讲课用时建议约 90 分钟含演示与答疑适合人群零基础或有其他语言经验、未接触过 Visual Studio 的学员学习目标学完本节后你将能够独立完成 VS 安装、MFC 组件配置并成功创建运行第一个 MFC 项目。目录课前说明为什么环境搭建这么重要Visual Studio 的选择与安装MFC 组件选装详解项目模板与目录结构动手练习创建并运行第一个项目常见问题排查课后作业一、课前说明为什么环境搭建这么重要很多初学者会跳过这一节直奔代码结果发现程序编译不过报了一堆看不懂的错误找不到 MFC 项目模板运行程序时提示缺少 DLL不知道哪个文件该改、哪个不该动这些问题归根结底都是环境没搞对。环境搭建就像盖房子打地基 — 地基歪了后面的一切都会出问题。本节的目标就是让每个人手里的开发环境完全一致且正确这样后续课程中大家遇到的问题才是同一个问题方便统一解答。二、Visual Studio 的选择与安装2.1 选哪个版本Visual Studio 有多个版本先帮大家理清版本是否免费是否支持 MFC适合谁Community社区版✅ 免费✅ 支持个人开发者、学生、小团队Professional专业版❌ 付费✅ 支持企业开发Enterprise企业版❌ 付费✅ 支持大型团队VS Code✅ 免费❌ 不支持 MFC不适合本课程结论我们使用 Visual Studio Community 2022免费且功能完全够用。如果你的电脑上已经安装了 VS 2019 或 VS 2017也可以使用界面大同小异。本教程以 VS 2022 为准。讲师提示如果学员电脑配置较低可以安装 Visual Studio 2019它对老机器更友好。但功能差异很小不影响教学。2.2 去哪里下载访问微软官方下载页面https://visualstudio.microsoft.com/zh-hans/downloads/找到Visual Studio Community 2022点击「免费下载」。下载完成后你会得到一个叫VisualStudioSetup.exe的安装程序。⚠️注意事项不要从第三方下载站下载可能捆绑了修改过的安装包。安装文件只有约 2-3 MB它是一个在线安装器真正的组件会在安装过程中从网络下载。2.3 安装步骤图文全流程步骤一运行安装器双击VisualStudioSetup.exe如果弹出用户账户控制UAC窗口点击「是」。步骤二选择工作负荷安装器启动后你会看到「工作负荷」选项卡。这是最关键的一步你需要勾选✅「使用 C 的桌面开发」这个工作负荷会包含MSVC微软 C 编译器Windows SDKC 基础工具调试器讲课重点给学员 2 分钟时间找到这个选项并勾选。等所有人都勾好了再继续。步骤三确认 MFC 组件这一步最容易遗漏勾选「使用 C 的桌面开发」后不要直接点安装。在右侧的「安装详细信息」面板中你会看到一个可展开的列表。找到并确保勾选✅「适用于 v143 生成工具的 C MFCx86 和 x64」如果你用的是 VS 2019名称里会是 v142VS 2017 则是 v141。数字代表工具集版本号。⚠️血的教训这是整节课最容易翻车的地方很多学员装完 VS 后发现没有 MFC 项目模板就是因为忘了勾这个。回头补装又要再等半小时。讲师可以带着学员做一遍找到「使用 C 的桌面开发」点击右侧「安装详细信息」的下拉箭头滚动找到 MFC 选项确认前面有 ✓步骤四选择安装位置可选点击顶部的「单个组件」或「语言包」选项卡可以根据需要调整。一般来说保持默认即可。如果 C 盘空间紧张可以在这个界面底部修改「安装位置」但要注意核心组件SDK、编译器、运行时必须放在固态硬盘上工作负荷和共享组件可以放在其他盘 建议学员至少给 C 盘预留30 GB空间一个完整的 C 桌面开发环境大约占用 10-15 GB。步骤五开始安装点击右下角「安装」按钮。安装器会开始下载并安装所有选中的组件。这个阶段一般需要20-40 分钟取决于网速和电脑性能。建议利用这段时间——浏览一下 VS 的官方文档预习一下本课程的下一节让自己放松一下步骤六首次启动安装完成后系统可能会提示重启。重启后从开始菜单启动Visual Studio 2022。首次启动会让你登录微软账号可以跳过但建议登录以便同步设置选择开发设置 → 选择「C」主题选择颜色主题 → 深色或浅色随喜好现在你的 VS 已经准备好了接下来我们验证 MFC 是否安装成功。三、MFC 组件选装详解3.1 验证 MFC 是否安装成功打开 Visual Studio 后我们快速验证一下点击「创建新项目」在搜索框中输入MFC你应该能看到以下三个模板模板名称用途MFC 应用创建标准 MFC 桌面应用程序MFC ActiveX 控件创建可在网页或 VB 中使用的控件MFC DLL创建 MFC 动态链接库如果看不到这些模板 → 说明 MFC 组件没有安装。需要回到安装器补装见 3.2 节。3.2 补装 MFC 组件如果你之前安装了 VS 但没装 MFC打开Visual Studio Installer开始菜单里搜索找到已安装的 VS 2022点击「修改」勾选「使用 C 的桌面开发」在右侧展开列表勾选「适用于 v143 生成工具的 C MFC」点击右下角「修改」等待安装完成约 5-15 分钟3.3 不同工具集版本的 MFCVS 安装完成后你的电脑上可能同时存在多个版本的 MFC 库工具集版本对应 VS 版本MFC 版本号库文件位置v143VS 202214.3xVC\Tools\MSVC\14.3x.xxxxx\atlmfcv142VS 201914.2xVC\Tools\MSVC\14.2x.xxxxx\atlmfcv141VS 201714.1xVC\Tools\MSVC\14.1x.xxxxx\atlmfc概念解释「工具集」Toolset就是编译器 链接器 标准库 MFC 库的套装。一次 VS 安装可以包含多个工具集创建项目时可以选择用哪个。我们课程统一使用 v143最新版。3.4 MFC 库的两种形态MFC 编译出来有两种形式形态特点文件后缀何时使用动态链接程序调用 mfc14x.dllexe 体积小.dll开发调试阶段、一般发布静态链接MFC 代码嵌入 exe 内文件大.lib独立发布、不需要附带 DLL在 VS 项目属性中可以通过「MFC 的使用」选项在两者之间切换。我们暂时使用默认的「在共享 DLL 中使用 MFC」即可后续章节会详细对比。3.5 MFC 组件全家福除了 MFC 核心库安装时还会获得这些附加成果MFC 头文件afxwin.h、afxext.h、afxcmn.h等 — 编程时#include的入口MFC 库文件.lib和.dll— 链接时需要的二进制MFC 源码在atlmfc\src\mfc目录下 — 高级阶段调试和学习的宝藏MFC 向导Wizard你在新建项目时看到的配置对话框MFC 工具如资源编辑器Resource Editor可直接拖拽设计界面四、项目模板与目录结构4.1 新建第一个 MFC 项目让我们一步步创建一个项目来观察目录结构。① 启动向导VS 菜单 → 文件 → 新建 → 项目选择「MFC 应用」项目名称HelloMFC位置选择一个方便找到的文件夹建议D:\MFC_Projects解决方案名称和项目名保持一致即可点击「创建」② MFC 应用程序向导这一步你会看到一个多页面的向导。不要害怕我们只改两处其他全部默认。应用程序类型页面选择「基于对话框」 ← 这是我们第一个程序的类型MFC 使用方式保持「在共享 DLL 中使用 MFC」点击「完成」讲课提示此时可以先不解释每个选项的含义让学员跟着点就行。等 4.2 节讲解目录结构时再回头解释。③ 项目生成完毕向导完成后VS 会自动生成一系列文件。你会在右侧的「解决方案资源管理器」中看到它们。4.2 解决方案 vs 项目很多初学者会混淆这两个概念解决方案 (Solution) ← 一个 .sln 文件 ├── 项目 A ← 一个 .vcxproj 文件比如你的 MFC 程序 ├── 项目 B ← 另一个 .vcxproj比如一个 DLL 库 └── 项目 C ← 又另一个比如单元测试概念比喻对应文件解决方案一个「大文件夹」装着所有相关项目HelloMFC.sln项目一个「独立的产出物」比如一个 exe 或 dllHelloMFC.vcxproj简单的程序只有一个项目但企业级软件通常一个解决方案下有多个项目。现在我们只需要一个项目就够了。4.3 逐文件解析目录结构创建完HelloMFC后你的磁盘上会生成以下文件。我们按重要程度从高到低来看HelloMFC/ ← 解决方案目录 ├── HelloMFC.sln ← 解决方案文件双击它打开整个项目 │ ├── HelloMFC/ ← 项目子目录 项目名称 │ ├── HelloMFC.vcxproj ← 项目文件定义编译选项、源文件列表等 │ ├── HelloMFC.vcxproj.filters ← 文件过滤器VS 里看到的虚拟文件夹 │ ├── HelloMFC.vcxproj.user ← 用户级设置每个开发者不同不提交到 Git │ │ │ ├── HelloMFC.h ← ★ 主头文件声明 CHelloMFCApp 类 │ ├── HelloMFC.cpp ← ★ 主源文件InitInstance 等入口逻辑 │ ├── HelloMFCDlg.h ← ★ 对话框头文件声明对话框类 │ ├── HelloMFCDlg.cpp ← ★ 对话框源文件按钮点击等业务逻辑 │ │ │ ├── pch.h ← 预编译头加速编译通常包含 afxwin.h │ ├── pch.cpp ← 预编译头的 cpp只有一行 #include pch.h │ │ │ ├── framework.h ← MFC 框架头汇总自动生成一般不用改 │ ├── targetver.h ← Windows 版本目标定义 │ ├── Resource.h ← ★ 资源 ID 定义菜单、按钮、对话框的 ID │ │ │ ├── HelloMFC.rc ← ★ 资源文件对话框布局、图标、字符串表 │ └── res/ ← 资源子文件夹 │ ├── HelloMFC.ico ← 程序图标 │ └── HelloMFC.rc2 ← 手动维护的资源一般不动 │ ├── Debug/ ← Debug 编译输出运行时自动生成 └── x64/ ← x64 编译输出运行时自动生成4.4 你需要关心的核心文件51 法则作为初学者你 90% 的时间只和这 6 个文件打交道文件干什么用类比HelloMFCDlg.h定义对话框类成员变量、成员函数声明遥控器的说明书HelloMFCDlg.cpp实现对话框的行为按钮点击做什么遥控器的实际电路HelloMFC.h应用程序类声明不常改HelloMFC.cppInitInstance— 程序启动的入口逻辑车钥匙HelloMFC.rc界面布局可视化编辑装修设计图Resource.h控件 ID 编号表房间的门牌号记住动手写代码主要在*Dlg.h和*Dlg.cpp中拖拽界面在.rc文件中给控件起名字在Resource.h中。4.5 解决方案资源管理器怎么看VS 右侧的资源管理器里你看到的可能是「虚拟文件夹」而不是磁盘上的实际目录解决方案 HelloMFC (1/1 项目) └── HelloMFC ├── 应用程序 ← 虚拟分组对应 App 类 ├── 对话框 ← 虚拟分组对应 Dlg 类 ├── 资源文件 ← 虚拟分组对应 .rc / Resource.h / res\ │ ├── HelloMFC.rc │ └── HelloMFC.ico ├── 头文件 ← 虚拟分组所有 .h ├── 源文件 ← 虚拟分组所有 .cpp └── 预编译头 ← 虚拟分组这些分组由.vcxproj.filters文件定义不影响编译纯粹方便浏览。双击任何一个文件它会在左侧的代码编辑区打开。讲师提示可以带学员做一个实验 — 在文件资源管理器和 VS 的解决方案资源管理器之间来回对比帮助理解虚拟文件夹和真实目录的对应关系。五、动手练习创建并运行第一个项目讲到这里该让学员自己动手了。以下操作建议讲师在投影仪上先演示一遍然后学员跟着做。5.1 创建项目文件 → 新建 → 项目 → MFC 应用名称MyFirstMFC位置选一个好找的文件夹应用程序类型 →基于对话框点击「完成」5.2 运行程序点击顶部工具栏的绿色 ▶ 按钮或按F5程序会编译并运行。你会看到一个空白的小窗口弹出标题栏写着「MyFirstMFC」。这只有几百行自动生成的框架代码但它已经是一个完整可运行的 Windows 桌面程序了它甚至自带标题栏的最小化 / 最大化 / 关闭按钮默认的「确定」和「取消」按钮窗口拖动功能5.3 做一个小修改体会开发流程我们来给窗口加点东西体验一下 MFC 的开发循环在解决方案资源管理器中双击MyFirstMFC.rc再双击Dialog文件夹下的对话框你会看到对话框设计器— 一个可视化编辑界面从左侧「工具箱」中拖一个Static Text静态文本控件到对话框上右键这个控件 → 属性 → 把Caption改成你好这是我的第一个 MFC 程序再拖一个Button按钮进来把Caption改成点我双击这个按钮VS 会自动跳转到MyFirstMFCDlg.cpp并生成一个点击处理函数在生成的函数体中写一行代码voidCMyFirstMFCDlg::OnBnClickedButton1(){AfxMessageBox(_T(你成功点击了按钮));}按 F5 运行点击「点我」按钮 — 弹出了消息框恭喜你已经完成了第一个 MFC 交互程序。虽然简单但这里面包含了控件拖放、属性修改、事件响应三大核心操作后续的所有复杂程序都是这套流程的扩展。5.4 关闭程序 vs 停止调试点窗口的关闭按钮✕→ 程序正常退出点 VS 工具栏上的红色 ■ → 强制停止调试时用六、常见问题排查这一节请学员标记好后面遇到问题先来这里找答案。Q1新建项目时找不到 MFC 模板原因安装 VS 时没有勾选 MFC 组件。解决打开 Visual Studio Installer → 找到 VS → 修改 → 勾选「使用 C 的桌面开发」→ 确认右侧列表中的 MFC 已勾选 → 修改。Q2编译时提示「找不到 afxwin.h」或类似错误原因同上MFC 组件未安装或不完整。解决同上。Q3运行时提示「找不到 mfc140u.dll」原因你的程序链接了 MFC 动态库但目标机器上没有安装对应的 VC 运行库。解决二选一安装 Visual C Redistributable推荐适合分发程序项目属性 → MFC 的使用 → 改为「在静态库中使用 MFC」程序变大但无需外部 DLLQ4F5 运行后窗口一闪而过原因程序正常执行完毕后退出了或者有个别错误导致 crash。解决如果是基于对话框的程序不会一闪而过如果一闪而过说明你可能选了错误的模板类型可以在return FALSE;前面打一个断点逐行检查Q5修改了代码但运行结果没变原因项目没有重新编译。解决使用「生成 → 重新生成解决方案」代替直接按 F5。按 F5 只编译改动过的文件有时 VS 检测不到改动。Q6资源编辑器打不开 .rc 文件原因某些文件关联出了问题。解决右键.rc文件 → 打开方式 → 选择「资源视图编辑器」。不要用文本编辑器直接打开.rc文件。Q7安装进度条卡住不动原因网络问题或磁盘空间不足。解决检查 C 盘是否还有 30 GB 以上关闭杀毒软件断开 VPN如果持续卡住取消后重新运行安装器七、课后作业学完本节后请独立完成以下任务作业一环境检查必做打开 VS → 创建新项目 → 确认能看到 MFC 模板新建一个基于对话框的 MFC 项目名称随意编译运行确保窗口能正常弹出截图发到群里证明环境已就绪作业二界面小实验选做在对话框上拖放 3 种不同的控件文本、按钮、编辑框给按钮添加点击事件点击按钮时用AfxMessageBox弹出编辑框中输入的文字提示获取编辑框文字用GetDlgItemText或者先用「添加变量」向导绑定一个CString变量作业三目录探索选做找到你项目的实际文件夹用记事本打开.vcxproj文件观察一下它的 XML 结构不需要完全看懂只是建立感性认识找出Debug文件夹里生成的.exe文件下一节预告1.2 C 核心语法回顾 — 我们会快速过一遍继承、虚函数、智能指针等你在 MFC 中天天打交道的 C 特性。本节完 · 有任何问题请随时在课堂上举手或在课后群里提问