没有合适的资源?快使用搜索试试~ 我知道了~
首页孙鑫C++ VC++深度教程:免费自学笔记覆盖18课
孙鑫C++ VC++深度教程:免费自学笔记覆盖18课
![](https://csdnimg.cn/release/wenkucmsfe/public/img/star.98a08eaa.png)
本篇C++视频教程-VC深入详解自学笔记详细涵盖了Windows程序开发的基础至进阶内容。作者孙鑫通过20个章节的讲解,旨在帮助学习者全面理解和掌握C++语言在Microsoft Visual C++(VC++)环境中的应用。 第1课介绍了Windows程序运行原理,涉及窗口产生过程、句柄原理、消息队列以及回调函数等核心概念。学习者会了解到窗口句柄的作用,如何获取和操作窗口,以及窗口关闭与应用程序退出的关联机制。同时,还会讨论stdcall和cdecl调用规范的区别,以及初学者可能遇到的常见问题和注意事项。 后续章节逐层深入,第2-10课着重于基础语法和控件编程,如C++基本语法、MFC框架、简单绘图、文本编程、菜单和对话框编程,甚至包括逃跑按钮的实现以及定制应用程序外观。这些内容涵盖了窗口界面的构建和交互设计。 第11-14课涉及更高级的主题,如图形的保存和重绘、文件操作、文档串行化以及网络编程,这些都是现代应用程序不可或缺的功能。而第15-18课进一步探讨了多线程编程,包括线程同步与异步套接字,以及进程间通信,这些都是并发处理的关键技术。 第19课讲解了Active控件,这是一种特殊的控件,可以动态嵌入到其他窗口中,提供更灵活的功能。最后两课则分别介绍动态链接库(DLL)的使用和Hook技术,这是模块化编程和底层数据操作的重要手段。 整个教程以实战为主,理论结合实例,使学习者能够通过视频和笔记逐步掌握C++在VC++环境下的应用,适合希望通过自学提升C++编程技能的开发者或对Windows编程感兴趣的读者。由于资源是完全免费的,这使得它成为入门和进阶C++学习者的宝贵资源。
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/4627025/bgb.jpg)
孙鑫 C++视频教程--VC++深入详解笔记
(建立)
Ctrl+F5
Execute(编译+链接+运行)
Ctrl+Shift+F5
Restarts the program(重新运行程序)
Debug
(调试)
F5
Go(顺序执行)
F11
step into (顺序执行,进入循环或函数)
F10
step over(顺序执行,不进入循环或函数)
Ctrl+F10
Run to cursor(自动执行到用户光标所指的语句前)
Shift+F5
Stop Debugging(停止调试)
F9
Insert/Remove breakpoint(在当前行插入/去掉断点)
Ctrl+Shift+F9
去掉所有断点
1.在 main 或 WinMain 之前,全局变量已经被分配内存并初始化了。
2.在 MFC 中在 WinMain 之前有个 theApp 全局变量先被构造并被初始化,而由于子类构造
函数执行前,其父类的构造函数先被执行,所以 CTestApp 的父类 CWinAPP 的构造函数先
执行。产生了 theApp 对象后,在 WinMain()中的指针*pThread 和*pApp 就有了内容。
3.MFC 大致流程:
CTestApp theApp;//构造全局对象
WinMain()
{
AfxWinMain();//调用下面的函数
}
AfxWinMain()
{
pThread->Initinstance();//初始化工作和注册窗口类,窗口显示和更新
pThread->Run();//消息循环
}
而在 BOOL CTestApp::InitInstance()中的代码
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CTestDoc),
RUNTIME_CLASS(CMainFrame), // main SDI frame window
RUNTIME_CLASS(CTestView));
AddDocTemplate(pDocTemplate);
完成了将这三个类关联起来的工作。
4.如何在单文档文件中显示一个 CButton 的对象?
在 CMainFrame::OnCreate() 中 定 义 一 个 CButton 的 对 象 btn; 然 后 调 用 btn.Create(" 维
新",WS_DISABLED |WS_CHILD | WS_VISIBLE | BS_AUTO3STATE,
CRect(0,0,300,100),/*GetParent(),*/this,123);
注意点:
(1).此处 btn 不能是局部变量,否则它的生命周期太短,将不能显示。
第 9 页 共 104 页
![](https://csdnimg.cn/release/download_crawler_static/4627025/bgc.jpg)
孙鑫 C++视频教程--VC++深入详解笔记
(2).在 CBUTTON 类的 Create 函数的第二个参数中加入 WS_VISIBLE 参数才行。否则
必须调用 ShowWindow 也可以在 view 的 OnCreate 消息响应函数中加入
(3).CButton 类的定义头文件在 afxwin.h 中,而 stdafx.h 包含了 afxwin.h,所以可以直接使
用。因为 MFC 中的每一个类中都有#include "stdafx.h"的声明。
第 10 页 共 104 页
![](https://csdnimg.cn/release/download_crawler_static/4627025/bgd.jpg)
孙鑫 C++视频教程--VC++深入详解笔记
Lesson 4 简单绘图
1. 在单文档中 view 挡在 MainFrame 的前面。此时如果编写针对 MainFrame 的 mouseClick
事件,将不会有反应。因为 MFC 视类窗口是覆盖在框架窗口上的,因此框架窗口不能
感
到鼠标消息.
2. MFC 的消息映射机制:
在每个能接收和处理消息的类中,定义一个消息和消息函数对照表,即消息映射表.在消息
映射表中,消息与对应的消息处理函数指针成对出现.某个类能处理的所有消息及其对应
的消息处理函数的地址都列在这个类所对应的静态表中.当有消息需要处理时,程序只要
搜索该消息静态表,查看表中是否含有该消息,就可知道该类能否处理此消息.如果能处理
该消息,则同样依照静态表很容易找到并调用对应的消息处理函数.
MFC 消息映射机制是针对能接受消息和处理消息的类来定义对应的消息映射表,而不是
由父类来定义所有消息对应的虚函数,由子类来覆盖其函数实现,因为这样做会使程序背
着一个很大的虚拟函数表的包袱运行,对内存是一种浪费.
MFC 工程中一个消息映射在三处添加代码:
(1): CDrawView 视类的头文件.h
//{{AFX_MSG(CDrawView)
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
两个 AFX_MSG 注释宏(因为加了注释符)之间,afx_msg 是限定符(也是宏),表明函数是一
个消 息 响应 函数 的 声明 , 如 果是 用 户 自 定义 的 消息 函数 响 应声 明 则 在注 释 宏下 ,
DECLARE_MESSAGE_MAP 之上加写代码
(2): CDrawView 的 cpp(源文件)的 BEGIN_MESSAGE_MAP 和 END_MESSAGE_MAP 之
间,定义了 CDrawView 类的消息映射表,其中 ON_WM_LBUTTONDOWN 映射宏就是
将鼠标左键按下消息(WM_LBUTTONDOWN)与一个消息响应函数(OnLButtonDown)关
联.
BEGIN_MESSAGE_MAP(CDrawView, CView)
//{{AFX_MSG_MAP(CDrawView)
ON_WM_LBUTTONDOWN()
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
如果添加自定义的消息映射,使用 ON_MESSAGE(用户定义消息,消息响应函数名)无”;”
结尾
(3): 是 CDrawView 的 cpp(源文件)中有函数实现。
void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
第 11 页 共 104 页
剩余63页未读,继续阅读
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/83415f35584442b2b2138ee882dc65b5_wangjc1.jpg!1)
wangjc1
- 粉丝: 3
- 资源: 14
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- AirKiss技术详解:无线传递信息与智能家居连接
- Hibernate主键生成策略详解
- 操作系统实验:位示图法管理磁盘空闲空间
- JSON详解:数据交换的主流格式
- Win7安装Ubuntu双系统详细指南
- FPGA内部结构与工作原理探索
- 信用评分模型解析:WOE、IV与ROC
- 使用LVS+Keepalived构建高可用负载均衡集群
- 微信小程序驱动餐饮与服装业创新转型:便捷管理与低成本优势
- 机器学习入门指南:从基础到进阶
- 解决Win7 IIS配置错误500.22与0x80070032
- SQL-DFS:优化HDFS小文件存储的解决方案
- Hadoop、Hbase、Spark环境部署与主机配置详解
- Kisso:加密会话Cookie实现的单点登录SSO
- OpenCV读取与拼接多幅图像教程
- QT实战:轻松生成与解析JSON数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)