第一章起步 1
1.1 Microsoft Developer Studio 1
目录 1
1.2创建一个基本的MFC应用程序 2
1.2.1 New对话框 2
1.2.2 Stepl 4
1.2.3 Step4 4
1.2.4 Step5 7
1.2.5 Step6 8
1.2.6新项目信息 8
1.2.7 Project Workspace窗口 8
1.2.8编译、链接、运行 12
1.3文档与视 12
1.3.1 MFC Framework 12
1.3.2.1 WinMain() 13
1.3.2.2 InitInstance() 13
1.3.2 CWinApp 13
1.3.2.3 Run()和OnIdle() 14
1.3.2.4 ExitInstance() 15
1.3.2.5其他成员函数 15
1.3.3 CSingleDocTemplate类 15
1.3.4 CFrameWnd 15
1.3.4.1 OnCreate() 16
1.3.5 CDocument类 17
1.3.4.2 EnableDocking和DockControlBar 17
1.3.5.1 OnNewDocument()和OnOpenDocument() 18
1.3.5.2 Serialize()和DeleteContents() 18
1.3.6 CView 19
1.3.6.1 GetDocument() 19
1.3.6.2 OnDraw() 20
1.3.6.3 OnInitialUpdate()和OnUpdate() 20
1.3.6.4 CView的派生类 21
1.4单文档界面(SDI)的HelloWin95应用 22
1.4.1.1 CString类 23
1.4.1.2 TRACE 23
1.4.1 CHelloWin95Doc类 23
1.4.1.3 CHelloWin95Doc()与~CHelloWin95Doc() 24
1.4.1.4 OnNewDocument 25
1.4.1.5 Serialize() 25
1.4.1.6 OnOpenDocument() 25
1.4.1.7DeleteContents 26
1.4.2 CHelloWin95View类 26
1.4.2.1 POINT 26
1.4.2.2 OnDraw() 27
1.4.2.3 CHelloWin95View()和~CHelloWin95View() 27
1.4.2.4 OnInitialUpdate()与OnUpdate() 28
1.4.2.5 OnLBnttonDown()与OnRButtonDown() 28
1.4.3 CHelloWin95App类 29
1.4.3.1 CHelloWin95App() 29
1.4.3.2 InitApplication()和ExitInstance() 29
1.4.4 CMainFrame类 30
1.4.5运行HelloWin95应用程序 30
1.4.3.3 InitInstance() 30
1.5多文档界面(MDI)、多文档模板和多视 32
1.5.1多文档界面的文档与视结构 32
1.5.2 CMultiDocTemplate类 32
1.5.3 CMDIFrameWnd类 33
1.5.4 CMDIChildWnd类 34
1.5.5 MDI中的CDocument类 35
1.5.6多文档模板 35
1.5.7多视 35
1.5.8其他 36
1.6多文档界面(MDI)的HelloWin95应用 37
1.6.1 AppWizard 37
1.6.2源代码 37
1.6.3运行 38
1.7多文档模板的HelloWin95应用 40
1.7.1增加新的文档类和视类 40
1.7.2资源文件 41
1.7.3 CHelloWin95App::InitInstance() 42
1.8本章综述 43
1.7.4运行 43
第二章派生自己的类 45
2.1 CObject类 45
2.1.1概述 45
2.1.2对象诊断 45
2.1.3运行时类信息 47
2.1.4运行时动态生成 48
2.1.5序列化 49
2.2.1派生自己的类——CText 54
2.2 Chart程序起步 54
2.2.1.1成员变量 55
2.2.1.2 Draw成员函数 57
2.2.1.3序列化 58
2.2.2生成Chart应用框架 59
2.2.2.1运行Appwizard 59
2.2.2.2加入CText类 59
2.2.2.3 CChartDoe类 60
2.2.3.1生成对话框资源模板 61
2.2.2.4 CChartView类 61
2.2.3对话框 61
2.2.3.2生成对话框类 64
2.2.3.3通用字体对话框 65
2.2.3.4调用属性对话框 66
2.2.4完成显示文本的Chart应用程序 67
2.2.4.1加入鼠标响应函数 67
2.2.4.2编译运行Chart 68
2.3设计自己的基类 68
2.3.1图形基类——CChartObj 69
2.3.2修改了的CText类 71
2.3.3曲线图形类——CCurLine类 73
2.3.3.1静态数据成员 74
2.3.3.2赋值操作符 75
2.3.3.3 Draw和DrawLine函数 76
2.3.3.4其他函数 78
2.3.4.1生成对话框资源 80
2.3.4曲线属性对话框 80
2.3.4.2用户自绘组合框 81
2.3.4.3 CLinePropertyDlg类 86
2.3.5增加曲线绘制功能的Chart应用程序 91
2.3.5.1 CChartDoc类 91
2.3.5.2 CChartView类 92
2.3.5.3编译、运行Chart 94
2.4本章综述 94
第三章派生自己的数据结构 95
3.1 MFC集合类 95
3.1.1概述 95
3.1.2集合类的选择 96
3.1.3非模板集合类 98
3.1.4模板集合类 99
3.1.4.1 CArray、CList和CMap 99
3.1.4.2 CTypedPtrArray、CTypedPtrList和CTypedPtrMap 101
3.1.5.1数组遍历 102
3.1.5集合类的遍历 102
3.1.5.2链表遍历 103
3.1.5.3映射的遍历 103
3.1.6集合类数据元素的删除 104
3.2带集合类的Chart应用程序 105
3.2.1设计CChartList类 105
3.2.1.1 CChartList和~CChartList 106
3.2.1.2 Draw和HitTest 106
3.2.1.3 GetRect 107
3.2.2修改CChartDoc类 108
3.2.3修改CChartView类 109
3.2.3.1菜单响应 109
3.2.3.2滚动视窗口 111
3.2.3.3图形选择、移动和拉伸 112
3.2.3.4其他 117
3.2.4运行Chart 118
3.3带标签页对话框的Chart 118
3.3.1 CAxis类 118
3.3.2.1组件库(Components and Controls Gallery) 128
3.3.2组件库与标签对话框 128
3.3.2.2标签页对话框资源 131
3.3.2.3数据传递 133
3.3.2.4标签对话框的调用 135
3.3.3 CXYPlot类 139
3.3.4修改CChartView类 143
3.3.5工具栏 145
3.3.6运行 146
3.4本章综述 148
第四章剪贴板与位图 149
4.1剪贴板 149
4.1.1剪贴板格式 149
4.1.2剪贴板操作 150
4.1.3 Clipboard Assistant Wizard 151
4.1.4运行 157
4.2.1键盘加速键和字符串资源 158
4.2删除与撤消(Undo) 158
4.2.2 Undo栈 159
4.2.3实现Undo功能 161
4.2.4运行 165
4.3位 图 166
4.3.1 Windows DIB图像文件 166
4.3.2 OS/2 DIB图像文件 168
4.3.3 CBitmapObj类 168
4.3.4实现位图输出 179
4.3.5利用内存位图提高显示质量 180
4.3.6位图封面 183
4.3.7 C++窗口类对象和Windows窗口对象 187
4.4本章综述 190
第五章动态链接库 191
5.1概 述 191
5.2 MFC DLL 192
5.2.1创建TextDLL项目 192
5.2.2 DllMain 194
5.2.4修改Chart和TextDLL项目 196
5.2.3输出函数 196
5.2.5运行Chart 200
5.3对用户开放的动态链接库 200
5.3.1 CLineGenMethod类 200
5.3.2 CLineGenMethodDlg类 205
5.3.3修改CCurLine类 211
5.3.4修改CChartApp类 216
5.3.5修改CLinePropertyDlg类 217
5.4非MFC DLL 219
5.5本章综述 222
第六章利用Windows 95新控件 223
6.1概 述 223
6.2自旋按钮(Spin Button) 224
6.3滑块控件(SliderControl) 226
6.4进度条控件(Progress Bar Control) 231
6.5工具条控件(ToolBar Control) 233
6.6动画控件(Animate Control) 236
6.7树控件(Tree Control) 238
6.8本章综述 246
第七章多线程编程 247
7.1概 述 247
7.1.1基本概念 247
7.1.2创建用户界面线程 247
7.1.3创建工作线程 250
7.1.4具体例子 251
7.2共享公共资源 255
7.3.1事件(Event) 260
7.3使用信号量 260
7.3.2互斥量(Mutex) 265
7.3.3信号量 271
7.4本章综述 278
第八章OpenGL编程 279
8.1概 述 279
8.2 OpenGL编程的基本概念 280
8.2.1头文件 280
8.2.2 Render Context 280
8.2.3像素格式(Pixel Format) 282
8.2.4前台、后台和其他缓冲区 285
8.2.5字体和文本 286
8.2.6 OpenGL的颜色模式与Windows的调色板 287
8.3一个OpenGL应用程序 295
8.4本章综述 308
第九章OLE客户 309
9.1 创建OLE客户应用框架 310
9.2.1客户项状态 311
9.2客户项 311
9.2.2客户项响应 312
9.2.3修改COLEClientCntrItem类 314
9.3修改视类COLEClientView 319
9.3.1鼠标选择与拖动 319
9.3.2剪贴板操作 323
9.3.3绘制客户项 326
9.3.4其他函数 326
9.4应用程序类COLEClientApp和文档类COLEClientDoc 328
9.5加入自己的数据 330
9.6运行OLEClient应用 336
9.7本章综述 337
第十章OLE服务器 338
10.1概 述 338
10.1.1链接对象和嵌入对象 338
10.1.2微型服务器和完全服务器 338
10.1.3注册OLE服务器 339
10.1.4 OLE动词 341
10.2.2 COLEServerApp类 342
10.2创建OLE服务器 342
10.2.1 MFC AppWizard 342
10.2.3 CInPlaceFrame类 345
10.2.4 COLEServerDoc类 347
10.2.5 COLEServerSrvrItem类 351
10.2.6 COLEServerView类 355
10.3运行OLEServer应用程序 366
10.4本章综述 367
11.1.1生成Automation服务器应用框架 368
第十一章自动化(Automation) 368
11.1 Automation服务器 368
11.1.2实现OLEAuto的基本功能 372
11.1.3实现自动属性和方法 375
11.1.3.1实现自动化属性 375
11.1.3.2实现自动化方法 379
11.2 Automation客户 384
11.2.1生成基于对话框模板的MFC应用 384
11.2.3.1生成OLE调度界面类 387
11.2.3实现OLE自动化客户功能 387
11.2.2编辑对话框资源 387
11.2.3.2修改COLEAutoDrivDlg类 391
11.2.3.3其他 395
11.2.4运行 396
11.3本章综述 397
第十二章ActiveX控件 398
12.1创建ActiveX控件 398
12.1.1 MFC ActiveX ControlWizard 398
12.1.2.1增加库存属性 401
12.1.2 ActiveX控件属性 401
12.1.2.2增加用户定制属性 403
12.1.3 ActiveX控件方法 406
12.1.4 ActiveX控件事件 407
12.1.5 ActiveX控件的绘制 408
12.1.6序列化 410
12.1.7 ActiveX控件属性页 412
12.1.8鼠标响应和右键菜单 414
12.1.9 ActiveX控件图标 417
12.2测试ActiveX控件 417
12.3 ActiveX控件客户应用程序 419
12.3.1生成应用框架 419
12.3.2增加ActiveX控件 420
12.3.3操纵ActiveX控件属性和方法 426
12.3.4响应ActiveX控件事件 430
12.3.5运行ActiveX控件客户应用程序 431
12.4本章综述 431