《深入浅出MFC 第2版》PDF下载

  • 购买积分:20 如何计算积分?
  • 作  者:侯俊杰著
  • 出 版 社:武汉:华中科技大学出版社
  • 出版年份:2001
  • ISBN:7900614931
  • 页数:701 页
图书介绍:《深入浅出MFC》分为四大篇。第一篇提出学习MFC程序设计之前的必要基础,包括Widnows程序的基本观念以及C++的高阶议题。“学前基础”是相当主观的认定,但作者是甚于自己的学习经验以及教学经验,其挑选应该颇具说服力。第二篇介绍Visual C++整合环境开发工具。此篇只是提纲挈领,并不企图取代Visual C++使用手册;然而对于软件使用的老手,此篇或已足以帮助掌握Visual C++整合环境。工具的使用虽然谈不上学问,但在视觉化软件开发过程中扮演极重角色。第三篇介绍application framework的观念,以及MFC骨干程序,所谓骨干程序,是指Visual C++的工具AppWizard所产生出来的程序码。当然,AppWizard会根据使用者的选项做出不同的程序码,作者据以解说的是大众化选项下的产品。第四篇以微软公司附于Visual C...

第0章 你一定要知道(导读)  1

这本书适合谁  1

你需要什么技术基础  2

你需要什么软硬件环境  3

让我们使用同一种语言  3

本书符号习惯  5

本书例程的取得  6

范例程序说明  6

与前版本之差异  9

如何联络作者  10

第一篇 勿在浮砂筑高台  11

第1章 Win32程序基本概念  13

Win32程序开发流程  14

需要什么函数库(.LIB)  14

需要什么头文件(.H)  15

以消息为基础,以事件驱动之(message based,event driven)  15

一个具体而微的Win32程序  16

程序进入点WinMain  22

窗口类之注册与窗口之诞生  23

消息循环  24

窗口的生命中枢:窗口函数  24

消息映射(Message Map)的雏形  25

对话框的运行  27

模块定义文件(.DEF)  28

资源描述档(.RC)  29

Windows程序的生与死  29

空闲时间的处理:OnIdle  30

Console程序  30

Console程序与DOS程序的差别  31

Console程序的编译链接  32

JBACKUP:Win32 Console程序设计  33

MFCCON:MFC Console程序设计  35

行程与线程(Process and Thread)  38

核心对象  38

一个行程的诞生与死亡  39

产生子行程  39

一个线程的诞生与死亡  41

以_beginthreadex取代CreateThread  42

线程优先级(Priority)  44

多线程程序设计实例  45

第2章 C++的重要性质  49

类及其成员——谈封装(encapsulation)  49

基类与派生类:谈继承(Inheritance)  50

this指针  53

虚拟函数与多态(Polymorphism)  53

类与对象大解剖  64

Object slicing与虚拟函数  68

静态成员(变量与函数)  70

C++程序的生与死:兼谈构造函数与解构函数  72

四种不同的对象生存方式(in stack、in heap、global、local static)  74

执行期类型信息(RTTI)  75

动态生成(Dynamic Creation)  77

异常处理(Exception Handling)  78

Template  81

Template Functions  82

Template Classes  83

Templates的编译与链接  85

第3章 MFC六大关键技术之仿真  87

MFC类层次结构  88

Framel范例程序  89

MFC程序的初始化过程  91

Frame2范例程序  93

RTTI(执行期类型识别)  96

类别型录网与CRuntimeClass  97

DECLARE_DYNAMIC/IMPLEMENT_DYNAMIC宏  98

Frame3范例程序  103

IsKindOf(类型识别)  109

Frame4范例程序  110

Dynamic Creation(动态生成)  111

DECLARE_DYNCREATE/IMPLEMENT_DYNCREATE宏 112

Frame6范例程序 117

Persistence(永久保存)机制 124

Serialize(数据读写) 124

DECLARE_SERIAL/IMPLEMENT_SERIAL宏 129

没有范例程序 131

Message Mapping(消息映射) 132

Frame7范例程序 139

Command Routing(命令传递) 147

Frame8范例程序 155

本章回顾 165

第二篇 欲善工事先利其器 167

第4章 Visual C++集成开发环境 169

安装与组成  169

四个重要的工具  179

内务府总管:Visual C++集成开发环境  180

关于project  182

关于工具设定  185

Source Browser  186

Online Help  189

调试工具  191

VC++调试器  192

Exception Handling  195

程序代码产生器:AppWizard  196

东圈西点完成MFC程序骨干  197

威力强大的资源编辑器  224

Icon编辑器  225

Bitmap编辑器  226

Cursor编辑器  226

工具栏(Toolbar)编辑器  227

VERSIONINFO资源编辑器  228

字符串表格(String Table)编辑器  229

菜单(Menu)编辑器  230

加速键(Accelerator)编辑器  231

对话框(Dialog)编辑器  231

Console程序的项目管理  232

第三篇 浅出MFC程序设计  235

什么是Application Framework?  237

第5章 总观Application Framework  237

侯捷怎么说  238

我怎么说  239

别人怎么说  241

为什么使用Application Framework  244

Microsoft Foundation Classes(MFC)   246

白头宫女话天宝:Visual C++与MFC  248

纵览MFC  250

General Purpose classes  250

数据处理类(collection classes)  251

杂项类  251

CObject  251

异常处理类(exception handling classes)  252

Windows API classes  252

Application framework classes  253

High level abstractions  254

Afx全局函数  254

MFC宏(macros)  255

MFC数据类型(data types)  256

第6章 MFC程序的生死因果  259

不二法门:熟记MFC类的层次结构  261

需要什么函数库?  262

需要什么头文件?  263

简化的MFC程序结构——以Hello MFC为例  264

Hello程序程序代码  265

MFC程序的来龙去脉(causal relations)  270

我只借用两个类:CWinApp和CFrameWnd  270

CWinApp——取代WinMain的地位  270

CFrameWnd——取代WndProc的地位  273

引爆器——Application object  274

隐晦不明的WinMain  275

AfxWinInit——AFX内部初始化操作  278

CWinApp∷InitApplication  279

CMyWinApp∷InitInstance  280

CFrameWnd∷Create产生主窗口(并先注册窗口类)  281

奇怪的窗口类名称Afx∶b∶14ae∶6∶3e8f  289

窗口显示与更新  291

CWinApp∷Run——程序生命的活水源头  291

把消息与处理函数连接在一起:Message Map机制  294

来龙去脉总整理  296

Callback函数  297

空闲时间(idle time)的处理:OnIdle  300

Dialog与Control 302

通用对话框(Common Dialogs) 303

本章回顾  304

第7章 简单而完整:MFC骨干程序  307

不二法门:熟记MFC类层次结构  307

MFC程序的UI新风貌  307

Document/View支撑你的应用程序  312

利用Visual C++工具完成Scribble step0  314

骨干程序使用哪些MFC类?  315

Document Template的意义  320

Scribble的Document/View设计  324

主窗口的诞生  325

工具栏和状态栏的诞生(Toolbar Status bar)  327

鼠标拖放(Drag and Drop)  329

消息映射(Message Map)  331

标准菜单File/Edit/View/Window/Help  331

对话框  333

改用CEditView  334

第四篇 深入MFC程序设计  337

为什么需要Document-View(形而上)  339

第8章 Document-View深入探讨  339

Document  340

View  341

Document Frame(View Frame)  342

Document Template  342

CDocTemplate管理CDocument/CView/CFrameWnd  342

Scribble Stepl的Document——数据结构设计  349

MFC Collection Classes的选用 349

CScribbleDoc的修改 352

文件:一连串的线条 359

线条与坐标点  361

Scribble Stepl的View:数据重绘与编辑  363

CScribbleView的修改  364

View的重绘操作:GetDocument和OnDraw  368

ClassWizard的辅佐  370

WizardBar的辅佐  372

Serialize:对象的档案读写  372

Serialization以外的档案读写操作 372

台面上的Serialize操作  374

台面下的Serialize写档奥秘  379

台面下的Serialize读档奥秘  383

DYNAMIC/DYNCREATE/SERIAL三宏  389

Serializable的必要条件  394

CObject类  395

IsKindOf  395

IsSerializable  396

CObject∷Serialize  397

CArchive类  397

operator<<和operator>>  398

自定SERIAL宏给抽象类使用  401

效率考虑  401

在CObList中加入CStroke以外的类  402

Document与View交流——为Step4做准备  406

第9章 消息映射与命令传递  409

到底要解决什么  409

消息分类  410

万流归宗Command Target(CCmdTarget)  411

三个奇怪的宏,一张巨大的网  412

DECLARE_MESSAGE_MAP宏 413

消息映射网的形成:BEGIN.../ON.../END...宏 414

米诺托斯(Minotauros)与西修斯(Theseus) 418

二万五千里长征——消息的传递  422

直线上溯(一般Windows消息)  423

拐弯上溯(WM_COMMAND命令消息)  426

罗塞达碑石:AfxSig_xx的奥秘  432

Scribble Step2:UI对象的变化  436

改变菜单  436

改变工具栏  438

利用ClassWizard连接命令项识别码与命令处理函数  440

维护UI对象状态(UPDATE COMMAND_UI) 443

本章回顾  446

第10章 MFC与对话盒  447

对话框编辑器  448

利用ClassWizard连接对话框与其专用类  451

对话框的消息处理函数  456

对话框数据交换与校验(DDX DDV)  458

如何唤起对话框  462

本章回顾  464

第11章 View功能的加强与重绘效率的提高  467

同时修改多个Views:UpdateAllViews和OnUpdate  468

在View中定义一个hint  470

把hint传给OnUpdate  473

利用hint增加重绘效率  474

可卷动的窗口:CScrollView  476

大窗口中的小窗口:Splitter  484

切分窗口的功能  484

切分窗口的程序概念  484

切分窗口的实现  486

本章回顾  488

概述  491

第12章 打印与预览  491

打印操作的后台原理  494

MFC默认的打印机制  498

Scribble打印机制的增强  509

打印机的页和文件的页  509

配置GDI绘图工具  511

尺寸与方向:关于映射方式(坐标系统)  511

分页  514

页眉与页脚  516

打印预览(Print Preview)  517

动态计算页码  517

本章回顾  518

第13章 多重文件与多重显示  519

MDI和SDI  519

多重显示(Multiple Views)  520

窗口的动态切分  521

窗口的静态切分  523

CreateStatic和CreateView  524

窗口的静态三叉切分  526

Graph范例程序  527

静态切分窗口之观念整理  537

同源子窗口  537

CMDIFrameWnd∷OnWindowNew  538

Text范例程序  539

非标准做法的缺点  544

多重文件  545

新的Document类  545

新的Document Template  547

新的UI系统  548

新文件的档案读写操作  549

第14章 MFC多线程程序设计  553

从操作系统层面看线程  553

三个观念:模块、行程和线程  553

线程优先级(Priority)  555

线程调度(Scheduling)  557

Thread Context  557

从程序设计层面看线程  558

错误观念  559

正确态度  559

Worker Threads和UI Threads  559

MFC多线程程序设计  560

探索CWinThread  560

产生一个Worker Thread  563

产生一个UI Thread  564

线程的结束  565

线程与同步控制  565

MFC多线程程序例程  568

第15章 定制一个AppWizard  571

Custom AppWizard的基本操作  573

到底Wizard是什么?  573

剖析AppWizard Components  577

Dialog Templates和Dialog Classes  578

Macros  579

Directives  580

动手修改Top Studio AppWizard 581

利用资源编辑器修改IDD_CUSTOM1对话框画面 581

利用ClassWizard修改IDD_CUSTOM1对话框的对应类CCustomlDlg 582

改写OnDismiss虚拟函数,在其中定义macros 583

Top Studio AppWizard执行结果 584

修改text template 584

更多的信息 585

第16章 站上众人的肩膀——使用Components ActiveX Controls  587

什么是Component Gallery  587

使用Components  590

Splash screen  590

System Info for About Dlg 592

Tip of the Day 593

Components实际运用:ComTest程序 594

修改ComTest程序内容 608

ActiveX Control基础观念:Properties、Methods、Events 611

使用ActiveX Controls 611

ActiveX Controls的五大使用步骤 613

使用Grid ActiveX Control:OcxTest程序 614

第五篇 附录 627

附录A 无责任书评:从摇篮到坟墓Windows的完全学习 629

无责任书评:MFC四大天王 637

附录B Scribble Step 5完整原始码 651

附录C Visual C++5.0 MFC范例程序一览 683

附录D 以MFC重建DBWIN 689