MFC 项目采用严格前后端分离架构,客户端仅实现 UI 渲染、接口请求、数据展示、异常提示。无算法、无核心业务存储、无权限判定逻辑,所有业务逻辑、抽奖规则、权限校验全部由后端接口实现,基于 HTTP/JSON 通信、Token 登录鉴权、401/403 权限拦截,完全符合企业工控上位机开发规范。
day1 MFC 基础框架
今日任务
MFC 工程创建、HTTP/JSON 库集成、登录 UI、Token 缓存
今日必背 3 题
- 交叉编译概念、嵌入式为何必须使用交叉编译?
- /dev、/sys、/proc 三个文件系统作用区别?
- 多线程互斥锁与条件变量解决的核心问题?
当日交付
MFC 登录工程
小时拆分
19:30--20:30 VS 新建 MFC 工程、引入 HTTP/JSON 库、登录 UI 布局
20:30--21:00 前端输入校验、Token 缓存框架搭建
一、VS 新建 MFC 工程

二、引入 HTTP/JSON 库(网络请求 + 数据解析,适配抽奖登录)
MFC 原生不支持 HTTP/JSON,我们用轻量、无依赖、最适合 MFC的两个库:
- JSON 解析 :
nlohmann/json(头文件 - only,无需编译) - HTTP 请求 :
WinINet(Windows 系统自带 API,无需额外安装)
引入JSON:
-
下载库文件进入官网:https://github.com/nlohmann/json/releases下载最新版的 json.hpp(单头文件)
-
放入工程目录
- 打开你的项目文件夹(
MenuLottery) - 将
json.hpp复制到你项目根目录下新建的include文件夹内
- 打开你的项目文件夹(
-
VS 中添加头文件到工程
- 右侧解决方案资源管理器 → 右键项目 → 属性
- 选中
C++→ 外部依赖库 → 给到include/路径 - 在需要用 JSON 的文件(如
MenuLotteryDlg.cpp)顶部添加:
#include <nlohmann/json.hpp> // 使用 nlohmann/json 单头文件 using nlohmann::json;
添加HTTP:
WinINet 是 Windows 内置网络库,直接在工程中开启即可:
-
打开项目属性右键项目 → 属性 → 配置属性 → 链接器 → 输入
-
添加依赖库在附加依赖项中添加:
WinINet.lib
-
点击确定保存
-
包含头文件在
pch.h(预编译头)顶部添加:
#include <afxwin.h>
#include <WinINet.h> // HTTP请求
#include <tchar.h>
三、登录 UI 布局
登录界面需求:账号输入框、密码输入框、登录按钮、退出按钮、提示文本、背景优化
| 控件类型 | 控件 ID | 标题 (Caption) | 说明 |
|---|---|---|---|
| 静态文本 | IDC_STATIC |
登录页面 | 标题(居中、大号字体) |
| 静态文本 | ------ |
账号: | 账号标签 |
| 编辑框 (Edit) | IDC_EDIT_USER |
无 | 账号输入 |
| 静态文本 | ------ |
密码: | 密码标签 |
| 编辑框 (Edit) | IDC_EDIT_PWD |
无 | 密码输入(加密) |
| 按钮 | IDC_BTN_LOGIN |
登录 | 登录请求按钮 |
| 按钮 | IDCANCEL |
退出 | 关闭窗口 |
四、Token 缓存
登录成功后拿到后端 Token,做两件事:
- 内存全局缓存 Token,后续请求自动带 Token
- 本地写入 ini 配置文件,重启软件免登录
五、交付物
MFC 登录工程

第 2 天 MFC 双业务页面
今日任务
MFC 登录接口联调、Token 保存、角色权限控显隐、活动 / 菜品页面开发
今日必背 3 题+必备通用技能
- Qt 信号槽原理,跨线程操作 UI 的禁忌?
- V4L2 摄像头完整采集流程?
- 串口通信如何处理丢包、数据异常问题?
- Linux:进程查看 ps、kill、后台运行 &、nohup
- C++:引用、指针与引用区别
当日交付
MFC 登录鉴权 +MFC 双业务界面
一、MFC 登录接口联调
二、Token 保存
三、角色权限控显隐
四、活动 / 菜品页面开发
五、交付物
5.1 MFC 登录鉴权
登录成功后将 Token 写入注册表,抽奖请求自动携带 Authorization: Bearer 头。
5.2 MFC 双业务界面
通过两个独立对话框实现,登录成功后销毁登录对话框,显示抽奖主对话框。

第 3 天MFC 抽奖 UI
今日任务
MFC 抽奖动画、倒计时、中奖弹窗、抽奖池接口对接、防重复请求
今日必背 3 题
- 嵌入式状态机设计的优势?
- 嵌入式设备本地数据持久化实现方式?
- MFC 消息映射机制原理?
当日交付
MFC 抽奖 UI 与数据渲染功能
一、MFC 抽奖动画
二、倒计时
三、中奖弹窗
四、抽奖池接口对接
五、防重复请求
六、交付物
6.1 MFC 抽奖 UI

通过定时器控制 GDI + 绘制的转盘旋转角度,实现减速动画效果,最终停在中奖菜品上。
6.2 数据渲染功能
从 SQLite 读取菜品表,按类别生成转盘 / 九宫格的选项,动态绘制文本和扇形区域。
第 4 天 MFC 统计导出
今日任务
MFC 中奖核销、状态流转、数据统计看板、图表渲染、Excel 导出、日志容错
今日必背 3 题
- 音视频项目为何信令用 TCP、媒体流用 UDP?
- 网络粘包、拆包的完整解决方案?
- 嵌入式音视频延迟、音画不同步如何优化?
- Linux:静态编译、动态编译、库文件.so/.a
- 网络基础:IP、端口、TCP/UDP 基础概念
当日交付
MFC 完整前后端交互业务闭环
一、MFC 中奖核销
二、状态流转
三、数据统计看板
四、图表渲染
五、Excel 导出
六、日志容错
七、交付物
MFC 完整前后端交互业务闭环
MFC 核销 + 统计 + Excel 导出全功能