如果你学过 Win32 API 写窗口,却总是在消息回调里堆一大坨 switch-case;或者你能用控制台写出扫雷、贪吃蛇的逻辑,但一让你加个菜单、加个状态栏就不知道从哪下手——那这门课针对的就是这两处缺口。它不是从 C++ 语法讲起,而是假定你已经能看懂类、虚函数和基本的 Windows 程序结构,直接把 MFC 这套界面框架拆开给你看。

先解决"消息映射看不懂"这件事

Win32 里窗口过程是一个大函数,所有消息都往里面灌。MFC 换了个做法:用宏把消息和成员函数绑在一起,编译器在背后生成一张查找表。很多人抄过 ON_COMMAND、ON_WM_PAINT,但说不清消息进来之后是怎么找到对应函数的,也不清楚 afx_msg 到底起什么作用。

这门课会把消息映射的展开过程讲透:消息如何从窗口过程进入、如何按 ID 和消息类型匹配、找不到处理函数时又流向哪里。搞明白这一层,你以后加自定义消息、处理命令更新(ON_UPDATE_COMMAND_UI)就不会靠猜。

菜单、工具栏、控件:界面元素不是拖上去就完事

资源编辑器里拖菜单和按钮很容易,难的是把它们和代码正确接上。课程覆盖的核心点包括:

  • 菜单项的 ID 与命令处理函数的对应关系,以及快捷键表为什么经常失效;
  • 工具栏按钮的按下、禁用、选中状态怎么随程序状态变化;
  • 编辑框、列表框、组合框等基本控件的数据读写时机,尤其是 DDX/DDV 在 UpdateData 时的行为;
  • 文档/视图结构里,数据放文档、显示放视图,什么时候该用、什么时候反而是负担。

这些都是实际写游戏配置界面、关卡编辑器、设置面板时会立刻撞上的问题,不是背概念能绕过去的。

案例部分要带着问题看

课程用一组递进的实战把前面的知识点串起来。看案例时建议别只盯着代码能不能跑,而是问自己几个问题:这个程序的消息循环是怎么转起来的?游戏状态存在哪个对象里?界面刷新是定时器驱动还是消息驱动?如果要把窗口改成可缩放,需要动哪几处?

游戏方向的案例通常会碰到定时刷新、键盘响应、双缓冲绘图这几件事。MFC 本身不擅长高性能渲染,但用它做界面外壳、把绘制逻辑放在视图的 OnDraw 里,是很多小工具和教学项目的常见组合。你要分清楚哪些部分属于 MFC 的职责,哪些应该交给自己写的游戏循环。

看完应该能回答的问题

  • 一条 WM_COMMAND 消息从产生到被你的函数处理,中间经过了哪些环节?
  • 为什么有的菜单项在没打开文档时应该是灰的,这个状态由谁负责更新?
  • 文档/视图拆分对游戏程序来说是帮忙还是添乱,判断依据是什么?
  • 把控制台版的游戏逻辑搬进 MFC 窗口,最小改造量是多少?

如果你对其中任何一题答不上来,说明对应的那部分需要补。可以按"消息映射 → 界面元素 → 文档视图 → 案例整合"的顺序过一遍,每看完一节就动手把示例改成自己的小需求,比如加一个暂停菜单项并让它正确置灰。能改出来,才算真的会了。MFC 不是什么新东西,但它在维护老项目、写 Windows 桌面工具时仍然绕不开,值得花时间把机制搞清楚,而不是停留在抄代码的层面。

Windows游戏编程系列之3:MFC界面编程及游戏案例实战

课程详情

课程标题

Windows游戏编程系列之3:MFC界面编程及游戏案例实战

课程核心介绍

本课程深入讲解MFC(Microsoft Foundation Classes)界面编程,涵盖消息映射机制、菜单栏、工具栏、基本控件、文档视图等内容。通过一系列实战案例,帮助学员从零开始创建MFC程序,掌握Windows游戏编程技巧。

适合人群

编程爱好者,对Windows游戏编程和MFC界面编程感兴趣的学员。

学习收获

- 掌握MFC的基本概念和编程技巧 - 熟悉MFC的消息映射机制、菜单栏、工具栏等界面元素 - 学会使用MFC的基本控件和文档视图 - 通过实战案例,掌握创建Windows游戏程序的方法

课程亮点

- 系统讲解MFC界面编程,从基础到实战 - 案例丰富,涵盖多个游戏编程实战 - 逐步引导,从零开始创建MFC程序 - 适合初学者和有一定基础的学员学习
  • 创建第一个MFC程序
  • Windows窗口程序回顾
  • MFC程序简介
  • MFC控制台程序
  • MFC窗口程序
  • 自己动手从零创建一个MFC程序
  • MFC的消息映射机制
  • MFC的窗口消息处理函数WindowProc
  • MFC的菜单栏
  • MFC的工具栏
  • MFC的对话框
  • MFC的基本控件
  • MFC的单文档视图
  • MFC的多文档视图
  • MFC使用GDI和GDI+实现绘图
  • MFC实现俄罗斯方块游戏

课程目录

01 创建第一个MFC程序
  01 MFC课程概览与介绍.mp4
  02 Windows窗口程序回顾及总结.mp4
  03 MFC控制台程序简介.mp4
  04 MFC对话框程序简介.mp4
  05 亲手从零创建一个MFC程序.mp4
02 MFC的消息映射机制
  01 消息映射的原理及操作步骤.mp4
  02 ON_MESSAGE宏添加消息映射.mp4
  03 消息映射机制的小结.mp4
  04 消息映射机制的实现原理.mp4
03 MFC的菜单栏
  01 添加主菜单的资源及界面设计.mp4
  02 添加主菜单的消息处理.mp4
  03 添加右键菜单及消息处理.mp4
04 MFC的工具栏
  01 添加工具条的资源及界面设计.mp4
  02 给工具条添加消息映射函数.mp4
05 MFC的对话框
  01 MFC模态对话框.mp4
  02 MFC非模态对话框.mp4
  03 MFC对话框程序结构分析.mp4
06 MFC的基本控件
  01 MFC按钮和文本框控件.mp4
  02 MFC单选按钮和复选框控件.mp4
  03 MFC列表框控件.mp4
  04 MFC列表视图控件.mp4
07 MFC的单文档视图
  01 创建MFC的单文档视图工程.mp4
  02 MFC的单文档视图的类关系分析.mp4
  03 单文档视图记事本界面设计.mp4
  04 记事本之文档和视图的关联.mp4
08 MFC的多文档视图
  01 MFC多文档视图及记事本代码.mp4
  02 MFC多文档视图的类关系.mp4
09 MFC使用GDI和GDI+实现绘图
  01 MFC实现GDI绘图.mp4
  02 MFC实现GDI+绘图.mp4
10 MFC实现俄罗斯方块游戏
  01 MFC俄罗斯方块数据结构代码逻辑讲解.mp4
  02 MFC俄罗斯方块绘制棋盘.mp4
  03 MFC俄罗斯方块让程序动起来.mp4