如果你写过一些 C++,但一碰到 Windows 平台就习惯性地绕开 Win32 API,或者只能照抄别人的窗口过程、线程创建代码,那这门课正好卡在你的缺口上。它不是语法课,也不讲 STL 怎么用,而是把 Windows 上那些"平时绕着走、面试又被问"的东西摆到台面上:服务怎么编、文件怎么管、屏幕怎么抓、权限怎么提。看完之前,先想清楚自己是不是真需要补这一块。

你缺的往往不是 C++,是平台

不少人的 C++ 经验停留在控制台程序:标准库够用,跨平台也能编译。可一旦需求变成"做一个后台常驻的服务""监控某个目录下文件变化""截一张当前屏幕再传出去",就发现标准库帮不上忙,只能去翻 MSDN。这门课针对的就是这段断层——从语言到 Windows 操作系统之间的那一层。

它默认你已经学过 Windows 程序设计的基础,比如消息循环、窗口注册、句柄概念。如果这些还陌生,先补前继内容再来,否则案例里的代码会变成"能跑但说不清"。

四个具体缺口,对应四块内容

  • 服务编程。服务不是"没有界面的 exe"。它的生命周期、启动类型、与 SCM 的交互、调试方式都和平常程序不同。这部分解决的是"怎么让程序在无人登录时也活着"。
  • 文件编程。不只是 fopen/fstream,而是 Windows 特有的文件句柄、异步 I/O、目录监控这些场景。做过日志采集、文件同步的人会立刻对上号。
  • 屏幕捕获。涉及 GDI、设备上下文、位图操作串起来的一条链路。它是检验你能否把多个 API 组合使用的典型例子。
  • 应用态提权。这是课程里比较少见的一块。不是教你"黑"系统,而是让你理解为什么有的操作明明有权限却失败、UAC 在中间做了什么、程序清单里的 requestedExecutionLevel 到底影响什么。做企业内工具的人迟早会撞上这个问题。

网络部分不是讲协议理论

课程把 socket 和自定义协议放在一起做,思路是"需求 → 协议设计 → socket 落地"。这对写惯了 HTTP 库调用、却没自己定过报文格式的人有用:什么时候该定长头、怎么处理粘包、心跳放在哪一层,这些是工程里真实会卡住的地方,不是八股。

综合案例部分涉及 C++ 的工程方向讨论,属于开放性的内容,不必当成标准答案看,重点是看一个从业者怎么拆解实际需求。

看完应该能回答的问题

  • 写一个 Windows 服务,最少的代码骨架包含哪几步?调试时怎么让它能被断点命中?
  • 同样是读文件,Win32 文件 API 相比标准库多给了你哪些控制能力?什么时候非用不可?
  • 截屏这一串操作里,DC、位图、内存 DC 各自承担什么角色?漏掉哪一步会得到黑图?
  • 一个普通用户权限的进程,为什么调用某些 API 会失败?提权请求写在哪里,用户会看到什么?
  • 自己设计一个 socket 协议时,粘包和边界问题你打算在哪一层解决?

如果这些问题你现在答不上来,且工作或面试里确实要用,那就值得花时间。如果只是想把 C++ 语法再练一遍,这门课不解决你的问题,别选错。

Windows C/C++程序实战视频课程

课程详情

课程介绍

本课程由资深C++程序员丁宋涛主讲,旨在帮助学员深入理解并掌握Windows平台下的C/C++程序开发。课程通过服务编程、文件编程、屏幕捕获等实战案例,展示了Windows API的综合应用,并深入分析了Windows平台中常见的应用态提权问题。

适合人群

  • C++工程开发经验相对欠缺的新手
  • 需要学习过前继课程Windows程序设计
  • 具有相对应的知识基础

学习收获

  • 掌握Windows API的综合应用
  • 了解并分析Windows平台中常见的应用态提权问题
  • 通过案例导引,将C++开发与实际企业技术要求相结合
  • 提升系统级编程能力

课程亮点

  • 10个实战案例,涵盖系统篇、网络篇和综合案例
  • 系统篇:演示应用程序提权、Windows API再封装
  • 网络篇:结合实际需求,实现socket+协议=网络编程
  • 综合案例:探讨C++发展方向,提供实用价值的实现案例

课程目录

01 对话框应用——简易文件管理器的实现
  01 课程介绍.mp4
  02 cmbctrl\listctrl\tooltip\资源与GU.mp4
  03 文件浏览侧边栏的实现.mp4
  04 文件浏览侧边栏的实现.mp4
  05 树控件与列表控件的交互.mp4
  06 成员函数、消息映射在VS2015中的添加方法.mp4
  07 组合框事件与checkbox显示隐藏文件.mp4
  08 SHFileOperation封装文件移动复制删除操作.mp4
02 对话框应用——屏幕截图的实现
  01 全屏与自定义窗体样式.mp4
  02 窗体透明效果.mp4
  03 截图的反白功能.mp4
  04 SetClipboardData:屏幕截图到剪贴板.mp4
03 单文档应用——Widows服务监视器的实现
  01 单文档建立与rc资源bug问题的解决方案.mp4
  02 权限与服务名称显示的解决.mp4
  03 GetStateString:服务状态的显示.mp4
  04 管理员身份启动vs2015调试低权限程序.mp4
  05 QueryServiceConfig2:获取服务描述.mp4
  06 启动暂停服务.mp4
  07 服务管理功能的完善:右键菜单的添加与事件响应.mp4
04 网络时间校准服务
  01 IP控件的使用-IP找地址、端口找应用.mp4
  02 CAsyncSocket编程:客户机/服务器通信(上).mp4
  03 对话框资源添加引起的bug.mp4
  04 获取网络时间与edit control 多行显示.mp4
  05 SetTimer:获取本地时间.mp4
  06 设置本机与网络时间同步.mp4
  07 应用程序提权与系统时间设定.mp4
05 网际IP追踪---网卡抓包
  01 WASSOCKET、原生套接字与Ping命令实现.mp4
  02 PING命令完整实现.mp4
  03 多线程与系统ping命令效果的仿真.mp4
  04 TCP/IP抓包的实现.mp4
06 TCP/UDP编程实战--远程关机的实现
  01 关机API的应用.mp4
  02 SOCK_STREAM:基于TCP的远程关机功能实现.mp4
07 HTTP编程实战:网页图片批量获取实战
  01 网络软件=socket+网络协议/基于MIME的网页访问控制.mp4
  02 CHTMLVIEW:自定义浏览器的实现.mp4
  03 WinInet类的使用:网页源码查看功能的实现.mp4
  04 MultiByteToWideChar:i18n问题中文乱码.mp4
  05 换行显示的问题:\n还是\r\n.mp4
  06 WindowsAPI与MFC交互:查看网页源码自定义行号显示.mp4
  07 自定义行号显示bug的原因释疑.mp4
  08 图片地址获取的实现MFC CString与string交互.mp4
08 c++系统编程与人工智能
  01 案例一:智能聊天应用的原型:C++系统编程与业务逻辑整合.mp4
  02 向QQ好友发送消息.mp4
  03 虚拟按键发送QQ消息.mp4
  04 外挂字典形成应答原型系统.mp4
  05 案例二:C++与人工智能语言python的互操作python.mp4
  06 pythonC混合编程环境搭建.mp4
  07 C++ Ping命令实现完毕.mp4
  08 C多线程结果与Python Excel生成.mp4
09 windowsHook,动态链接库原理及其应用
  01 GetAsyncKeyState:windows键盘跟踪.mp4
  02 定时器方案的不可行性与Hook Dll的原理剖析.mp4
  03 HOOK dll的实现.mp4
  04 标准输出重定向冲突与debugview调试输出.mp4
10 自定义外观的音视频播放器
  01 OnNcHitTest:客户区拖动与自定义窗体外观的显示.mp4
  02 CWMPPlayer4:activeX控件与C++对象映射.mp4
  03 Activie控件界面闪烁的一种解决方案.mp4
11 结课测试
  01 结课测试