新書推薦:
《
问物:可触摸的意义
》
售價:NT$
375.0
《
宠物革命:动物与现代英国生活的形成
》
售價:NT$
360.0
《
世界杂货店:罗伯特·谢克里科幻小说集(新版)
》
售價:NT$
340.0
《
(棱镜精装人文译丛)蔑视大众:现代社会文化斗争的实验
》
售價:NT$
275.0
《
皇家宫廷中的保健秘方 中小学课外阅读
》
售價:NT$
290.0
《
《诗经》十五讲 十五堂《诗经》历史文化与文学课 丹曾人文通识丛书
》
售價:NT$
395.0
《
述异记汇笺及情节单元分类研究(上下册)
》
售價:NT$
475.0
《
环境、社会、治理(ESG)信息披露操作手册
》
售價:NT$
1190.0
|
編輯推薦: |
本书读者群包括:
掌握了C语言,想进一步学习Windows编程的读者。
学习VC多年,但始终没有真正入门的读者。
正在从事VC开发的初级程序员。
有一定VC开发经验,想要系统地学习VC的读者。
|
內容簡介: |
新版本以Visual Studio 2017作为开发环境,将之前适用于Visual C 6.0的代码全部进行了升级,并修订了书中和代码中的一些疏漏。
|
關於作者: |
孙 鑫 国内著名的IT技术和教育专家,2009中国教育杰出人物。具有20多年的软件开发和教育培训经验,精通多种程序语言和技术架构, 曾主讲过的课程包括CC、VC、COMDCOMCOM 、SQL Server、Oracle、Java、J2EE、StrutsStruts 2、Hibernate、MyBatis、 Spring、数据库建模等。2004年曾推出《Java无难事》和《VC深入编程》教学视频,获得了强烈反响,在网络上掀起了一股视频 教学的风潮,数十万名学员通过这两套视频走上了软件开发的道路。从2006年开始,相继出版了畅销技术专著:《Java Web开发详解》《VC深入详解》《Struts 2深入详解》《Servlet JSP深入详解:基于Tomcat的Web开发》《XML、XML Schema、XSLT 2.0和XQuery开发详解 》《HTML5、CSS和JavaScript开发》等。
|
目錄:
|
目录
第1章准备开发环境1
1.1 下载并安装Visual Studio 20171
1.2 运行第一个程序
Hello World3
1.3 安装离线MSDN5
1.4 小结7
第2章Windows程序内部运行
机制8
2.1 API与SDK8
2.2 窗口与句柄9
2.3 消息与消息队列10
2.4 WinMain函数11
2.4.1WinMain函数的定义12
2.4.2窗口的创建13
2.4.3消息循环20
2.4.4编写窗口过程函数22
2.5 动手写第一个Windows程序26
2.6 消息循环的错误分析30
2.7 变量的命名约定32
2.8 小结33
第3章掌握C34
3.1 从结构到类34
3.1.1结构体的定义34
3.1.2结构体与类36
3.2 C的特性38
3.2.1类与对象39
3.2.2构造函数39
3.2.3析构函数42
3.2.4函数的重载43
3.2.5this指针44
3.2.6类的继承46
3.2.7虚函数与多态性、纯虚函数54
3.2.8函数的覆盖和隐藏58
3.2.9引用61
3.2.10C类的设计习惯及头文件
重复包含问题的解决63
3.2.11VC程序编译链接的原理与过程69
第4章MFC框架程序剖析71
4.1 MFC应用程序向导71
4.2 基于MFC的程序框架剖析74
4.2.1MFC程序中的WinMain
函数76
4.2.2MFC框架窗口87
4.2.3消息循环93
4.2.4窗口过程函数95
4.2.5文档视类结构96
4.2.6帮助对话框类96
4.3 窗口类、窗口类对象与窗口97
4.3.1三者之间关系97
4.3.2在窗口中显示按钮101
4.4 本章小结108
第5章简单绘图109
5.1 MFC消息映射机制109
5.1.1类向导110
5.1.2消息映射机制113
5.2 绘制线条118
5.2.1利用SDK全局函数实现
画线功能119
5.2.2利用MFC的CDC类实现
画线功能120
5.2.3利用MFC的CClientDC类
实现画线功能121
5.2.4利用MFC的CWindowDC类
实现画线功能123
5.2.5在桌面窗口中画线124
5.2.6绘制彩色线条125
5.3 使用画刷绘图127
5.3.1简单画刷127
5.3.2位图画刷128
5.3.3透明画刷131
5.4 绘制连续线条136
5.5 绘制扇形效果的线条138
5.6 本章小结140
第6章文本编程141
6.1 插入符141
6.1.1创建文本插入符141
6.1.2创建图形插入符145
6.2 窗口重绘146
6.2.1OnDraw函数147
6.2.2添加字符串资源149
6.3 路径151
6.4 字符输入155
6.4.1设置字体160
6.4.2字幕变色功能的实现162
6.5 本章小结167
第7章菜单168
7.1 菜单命令响应函数168
7.2 菜单命令的路由171
7.2.1程序类对菜单命令的响应
顺序171
7.2.2Windows消息的分类172
7.2.3菜单命令路由的过程172
7.3 基本菜单操作174
7.3.1标记菜单175
7.3.2默认菜单项177
7.3.3图形标记菜单179
7.3.4禁用菜单项182
7.3.5移除和装载菜单185
7.3.6MFC菜单命令更新机制188
7.3.7快捷菜单192
7.4 动态菜单操作195
7.4.1添加菜单项目195
7.4.2插入菜单项目197
7.4.3删除菜单200
7.4.4动态添加的菜单项的
命令响应200
7.5 电话本示例程序202
7.5.1动态添加子菜单的实现203
7.5.2显示输入的字符205
7.5.3添加菜单项及其命令
响应函数207
7.5.4框架类窗口截获菜单
命令消息210
7.6 本章小结217
第8章对话框(一)218
8.1 对话框基本知识218
8.1.1常用控件介绍218
8.1.2对话框的种类220
8.2 对话框的创建和显示220
8.2.1模态对话框的创建224
8.2.2非模态对话框的创建225
8.3 动态创建按钮227
8.4 控件的访问231
8.4.1控件的调整232
8.4.2静态文本控件233
8.4.3编辑框控件235
8.5 对话框伸缩功能的实现247
8.6 输入焦点的传递253
8.7 默认按钮的进一步说明261
8.8 本章小结261
第9章对话框(二)262
9.1逃跑按钮的实现262
9.2 属性表单和向导的创建269
9.2.1创建属性页272
9.2.2创建属性表单277
9.2.3向导的创建279
9.3 本章小结296
附录296
第10章定制应用程序外观299
10.1 修改应用程序窗口的外观299
10.1.1在窗口创建之前修改299
10.1.2在窗口创建之后修改302
10.2 修改窗口的光标、图标和
背景304
10.2.1在窗口创建之前修改304
10.2.2在窗口创建之后修改308
10.3 模拟动画图标310
10.3.1加载图标资源310
10.3.2定时器的处理312
10.4 工具栏编程314
10.4.1在工具栏上添加和删除
按钮315
10.4.2创建工具栏316
10.5 状态栏编程325
10.6 进度栏编程332
10.6.1在窗口中创建进度栏332
10.6.2在状态栏的窗格中
创建进度栏333
10.7 在状态栏上显示鼠标
当前位置340
10.8 本章小结343
第11章绘图控制344
11.1 简单绘图344
11.2 设置对话框349
11.2.1设置线宽349
11.2.2设置线型353
11.3 颜色对话框355
11.4 字体对话框360
11.5 示例对话框365
11.6 改变对话框和控件的背景及
文本颜色368
11.6.1改变整个对话框及其上
子控件的背景色369
11.6.2仅改变某个子控件的背景及
文本颜色370
11.6.3改变控件上的文本字体373
11.6.4改变按钮控件的背景色及
文本颜色375
11.7 位图的显示379
11.8 本章小结384
第12章图形的保存和重绘385
12.1 坐标空间和转换385
12.1.1坐标空间385
12.1.2转换386
12.1.3逻辑坐标和设备坐标390
12.2 图形的保存和重绘392
12.2.1集合类CPtrArray394
12.2.2OnPaint与OnDraw398
12.3 窗口滚动功能的实现400
12.3.1CScrollView类400
12.3.2图形错位现象402
12.4 元文件407
12.4.1元文件的使用407
12.4.2元文件的保存与打开411
12.5 兼容设备描述表413
12.6 本章小结416
第13章文件和注册表操作417
13.1 const char*和char* const417
13.1.1const char*417
13.1.2char* const418
13.2 C语言对文件操作的支持419
13.2.1文件的打开419
13.2.2文件的写入420
13.2.3文件的关闭422
13.2.4fflush函数423
13.2.5文件指针定位423
13.2.6文件的读取424
13.2.7二进制文件和文本文件428
13.2.8文本方式和二进制方式430
13.3 C对文件操作的支持433
13.4 Win32 API对文件操作的
支持435
13.4.1文件的创建和打开435
13.4.2文件的写入439
13.4.3文件的读取440
13.5 MFC对文件操作的支持442
13.5.1文件的写入443
13.5.2文件的读取443
13.5.3CFileDialog类444
13.6 INI文件的访问449
13.6.1INI文件的结构449
13.6.2INI文件的写入450
13.6.3INI文件的读取451
13.7 CWinApp的注册表读写
函数453
13.8 注册表的编程455
13.8.1注册表API455
13.8.2注册表访问示例462
13.9 本章小结468
第14章文档与串行化469
14.1 使用CArchive类对文件进行
读写操作469
14.2 MFC框架程序提供的文件
新建功能472
14.2.1IDR_MAINFRAME字符串
资源473
14.2.2OnNewDocument函数的
调用过程477
14.3 文档串行化485
14.3.1文档类的Serialize函数485
14.3.2MFC框架对Serialize函数的
调用过程487
14.4 可串行化的类495
14.4.1实现类对串行化的支持495
14.4.2利用可串行化类的Serialize
函数保存和加载对象497
14.4.3版本号501
14.4.4利用CObArray类对串行化的支持保存和加载数据502
14.5 文档对象数据的销毁506
14.6 本章小结510
第15章网络编程511
15.1 计算机网络基本知识511
15.1.1IP地址512
15.1.2协议512
15.1.3网络的状况513
15.1.4网络异质性问题的解决513
15.1.5ISOOSI七层参考模型513
15.1.6数据封装516
15.1.7TCPIP模型516
15.1.8端口517
15.1.9套接字(socket)的引入517
15.1.10网络字节顺序518
15.1.11客户机服务器模式518
15.2 Windows Sockets的实现519
15.2.1套接字的类型519
15.2.2基于TCP(面向连接)的
socket编程519
15.2.3基于UDP(面向无连接)的socket编程520
15.3 相关函数520
15.3.1WSAStartup函数521
15.3.2socket函数522
15.3.3bind函数522
15.3.4inet_addr和inet_ntoa
函数523
15.3.5inet_pton和inet_ntop
函数524
15.3.6listen函数525
15.3.7accept函数525
15.3.8send函数525
15.3.9recv函数526
15.3.10connect526
15.3.11recvfrom526
15.3.12sendto函数527
15.3.13htons和htonl函数527
15.4 基于TCP的网络应用程序的
编写528
15.4.1服务器端程序528
15.4.2客户端程序532
15.5 基于UDP的网络应用程序的
编写535
15.5.1服务器端程序535
15.5.2客户端程序537
15.6 基于UDP的简单聊天程序538
15.6.1服务器端程序539
15.6.2客户端程序542
15.7 本章小结544
第16章多线程545
16.1 基本概念545
16.1.1进程545
16.1.2线程549
16.2 线程创建函数550
16.3 简单多线程示例551
16.4 线程同步555
16.4.1火车站售票系统模拟
程序555
16.4.2多线程程序容易出现的
问题557
16.4.3利用互斥对象实现线程
同步558
16.5 保证应用程序只有一个实例
运行566
16.6 网络聊天室程序的实现567
16.6.1加载套接字库568
16.6.2创建并初始化套接字569
16.6.3实现接收端功能570
16.6.4实现发送端功能575
16.7 本章小结577
第17章线程同步与异步套接字编程578
17.1 事件对象578
17.1.1创建事件对象578
17.1.2设置事件对象状态579
17.1.3重置事件对象状态579
17.1.4利用事件对象实现线程
同步579
17.1.5保证应用程序只有一个实例
运行586
17.2 关键代码段586
17.2.1相关的API函数587
17.2.2利用关键代码段实现线程
同步587
17.3 线程死锁590
17.4 互斥对象、事件对象与关键代码
段的比较594
17.5 基于消息的异步套接字594
17.5.1相关函数说明595
17.5.2网络聊天室程序的实现600
17.6 本章小结610
第18章进程间通信611
18.1 剪贴板611
18.1.1数据发送612
18.1.2数据接收616
18.2 匿名管道618
18.2.1基础知识618
18.2.2进程的创建619
18.2.3父进程的实现624
18.2.4子进程的实现628
18.3 命名管道631
18.3.1基础知识631
18.3.2服务器端程序635
18.3.3客户端程序640
18.4 邮槽643
18.4.1服务器端程序644
18.4.2客户端程序645
18.5 本章小结648
第19章ActiveX控件649
19.1 ActiveX控件649
19.1.1ActiveX控件的好处650
19.1.2MFC ActiveX控件向导650
19.1.3ActiveX控件的注册654
19.1.4ActiveX控件的测试656
19.1.5时钟控件的实现659
19.2 属性660
19.2.1标准属性661
19.2.2自定义属性666
19.3 方法672
19.4 事件674
19.4.1标准事件675
19.4.2自定义事件676
19.5 属性的持久性679
19.6 环境属性681
19.7 ActiveX控件测试程序683
19.8 本章小结686
第20章动态链接库688
20.1 动态链接库概述688
20.1.1静态库和动态库688
20.1.2使用动态链接库的好处689
20.1.3动态链接库的加载690
20.2 DLL的创建和使用690
20.2.1Dumpbin命令691
20.2.2从DLL中导出函数692
20.3 隐式链接方式加载DLL693
20.3.1利用extern声明外部
函数694
20.3.2Dependency Walker工具697
20.3.3利用_declspec(dllimport)
声明外部函数698
20.4 完善DLL例子699
20.5 从DLL中导出C类701
20.6 解决名字改编问题704
20.7 显示加载方式加载DLL709
20.7.1LoadLibary函数709
20.7.2调用约定711
20.7.3根据序号访问DLL中的
导出函数714
20.8 DllMain函数715
20.9 MFC DLL716
20.10 本章小结717
第21章HOOK编程718
21.1 HOOK编程718
21.1.1基本知识718
21.1.2进程内钩子720
21.1.3全局钩子727
21.2 本章小结738
|
內容試閱:
|
前言
本书第1版《VC深入详解》,从2004年面市,至今已有15年之久,作为一本技术图书,《VC深入详解》的生命力让我惊叹,时至今日,该书仍畅销不衰。15年时光,可以让一个幼童成长为成人,可以让一个初涉软件开发领域的编程新手成长为公司的CTO。15年内,我见证了很多程序爱好者通过阅读本书进入软件开发岗位。在给企业做培训时,经常有企业同行告诉我他是看着我的图书和视频成长的,这让我感到莫大的欣慰。
15年中,Visual C 6.0已经逐渐被Visual Studio开发环境所替代,本书的编辑、读者都希望我能够将本书进行改版,以适应当前最新的Visual Studio开发环境,然而由于我个人的原因,迟迟没有将本书从Visual C 6.0升级到Visual Studio。不过,迟到的改版终于来了,本书以最新的Visual Studio 2017作为开发环境,将之前适用于Visual C 6.0的代码全部进行了升级,并修订了书中和代码中的一些疏漏。
本书自第1版面市,很多读者就给予了本书极高的评价,将之与《深入浅出MFC》相提并论,甚至将我和侯捷老师等同,这让我诚惶诚恐。从技术角度上来说,我和侯捷老师相差甚远,从图书角度上来讲,本书对MFC的阐述部分仅仅是让读者快速入门,能快速应用于开发,深入理解MFC框架的各种原理和设计思想,读者还需要进一步参阅《深入浅出MFC》。读者一定要正确地对待本书,切不可因本书而产生C编程不过如此的念头,那样实非此书之福,也非读者之福。
C编程领域浩瀚博大,本书只是把读者领入了Windows平台下Visual C开发的道路,前方的路还很远很长,衷心希望读者能够继续学习,继续成长,终有一天成长为C领域的编程高手。
本书读者对象
本书读者群包括:
? 掌握了C语言,想进一步学习Windows编程的读者。
? 学习VC多年,但始终没有真正入门的读者。
? 正在从事VC开发的初级程序员。
? 有一定VC开发经验,想要系统地学习VC的读者。
本书的内容组织
本书在内容的组织上循序渐进、由浅入深;在知识的介绍上,从内到外、从原理到实践。
第1章首先为读者介绍了Visual Studio 2017的安装和使用,以及离线MSDN的安装。第2章帮助读者掌握Windows平台下程序运行的内部机制。第3章帮助读者复习C中的重要知识,为后续知识的学习打下良好的基础。第4章重点剖析MFC框架程序的运行脉络,并与第2章的知识做对照,为读者彻底扫清学习MFC的迷雾。相信通过这一章的学习,很多以前学过MFC的读者都会有一种恍然大悟的感觉。前四章可以归为基础部分,从第5章开始就是实际应用开发的讲解了,包括绘图、文本、菜单、对话框、定制程序外观、图形保存和重绘、文件和注册表操作、网络编程、多线程、进程间通信、ActiveX控件、动态链接库、HOOK编程等多个主题,并且每一章都有一个完整的例子。
本书的讲解理论结合实际,选用的例子和代码非常具有代表性和实用价值,我和我的学员在实际开发项目的过程中就曾经直接使用过很多书中的代码。
本书的实例程序
在编写本书时,使用的操作系统是Windows 8.1专业版,开发工具是Visual Studio 2017,CPU是双核四线程。本书所有的实例程序在该环境中都运行正常。
提示:由于一些网络软件使用的端口可能与本书例子中的网络程序使用的端口冲突,在运行本书例子中的网络程序时,如果出错,请更换程序中的端口号,或者关闭引起冲突的网络软件后再运行书中的程序。
学习建议
我曾经发布过一套Visual C 6.0编程开发的视频,视频中的内容与书中的内容大体是一致的,读者在学习本书时,可以以视频为辅,这样能够更快、更好地掌握VC编程。本套视频可以到本书代码下载处进行下载。
在学习本书时,建议读者多动脑(想想为什么),多动手(将知识转换为自己的)。在理解的前提下,独立地编写出书中每章的例子程序,以作为是否掌握本章内容的一个考核。
本书代码下载
轻松注册成为博文视点社区用户(www.broadview.com.cn),扫码直达本书页面。
下载资源:本书如提供示例代码及资源文件,均可在下载资源处下载。
提交勘误:您对书中内容的修改意见可在提交勘误处提交,若被采纳,将获赠博文视点社区积分(在您购买电子书时,积分可用来抵扣相应金额)。
交流互动:在页面下方 读者评论 处留下您的疑问或观点,与我们和其他读者一同学习交流。
页面入口:http:www.broadview.com.cn36221
最后,衷心地祝愿读者能够从此书获益,从而实现自己的开发梦想。由于本书的内容较多、牵涉的技术较广,错误和疏漏之处在所难免,欢迎广大技术专家和读者指正。我的联系方式是csunxin@sina.com。
作者
2019年6月
|
|