第一篇 Microsoft Visual C++6.0 Active模板库 3
第一部分 Active模板库 3
ATL概述 3
ATL2.1中的新内容 4
编辑器优化 4
对象与控件 5
新类与重新命名的类 6
临界区 9
连接点 9
CComBSTR方法 10
CComVariant方法 10
寄存器 10
废除主题 11
ATL3.0的新内容 12
ATL新特性 12
从ATL2.1移植的性质 14
ATL类的变化 15
新宏 16
COM简介 18
COM与ATL简介 18
ATL简介 21
创建ATL项目 23
使用ATL COMAppWizard 23
ATL项目中的MTS支持 25
ATL COM AppWizard产生的文件 26
添加对象与控件 26
使ATL对象不可直接创建ATL对象 32
向已有对象或控件添加新接口 32
ATL COM对象基础 34
实现CComObjectRootEx 35
实现CComObject,CComAggObject与CComPolyObject 35
支持IDispatch与IErrorInfo 36
支持IDispEventImpl 36
改变缺省类工厂及聚合模式 38
创建聚合 39
创建ATL项目 40
复合控件原理 40
修改ATL项目 41
插入复合控件 41
向复合控件添加功能 42
建立与测试ATL项目 44
ATL对DHTML控件的支持 45
识别DHTML控件项目成分 45
从DHTML中调用C++代码 47
创建ATL DHTML控件 48
修改ATL DHTML控件 49
测试ATL DHTML控件 49
测试修改的ATL DHTML控件 51
MMC Snap_In Wizard 52
MMC Snap-In Wizard概述 52
MMC Snap-In FAQ 57
ATL窗口类 63
使用窗口 63
实现窗口 64
实现对话框 68
使用被包容窗口 69
连接点 71
连接点类 71
向对象添加连接点 72
连接点的例子 74
枚举 76
在ATL中使用CComEnum,_Copy, 76
CComIEnum和CComEnumImpl创建枚举 76
启动QueryInterface调试 77
ATL对象调试提示 77
使用DebugBreak 77
启动参考计数(ReferenceCount)调试 78
ATL服务 79
CServiceModule::Start 79
CServiceModule::ServiceMain 80
CServiceModule::Run 80
CServiceModule::Handler 81
DCOMCNFG 82
注册入口 82
调试提示 83
ATL注册元件(寄存器) 85
创建寄存器脚本 85
建立与寄存器代码(C++)的静态链接 95
第二部分 Active模板库教程 96
ATL教程 96
第一步:创建项目 96
第二步:添加控件 99
第三步:向控件添加属性 102
第四步:改变绘图代码 104
第五步:添加事件 109
第六步:添加属性页 112
第七步:将控件放在网页上 117
ATL参考 119
ATL类概述 120
类工厂 120
第三部分 Active模板库参考 120
类信息 121
COM模块 121
复合控件 121
连接点 121
控件:一般支持 122
数据传输 122
接口指针 123
IUnknown实现 123
双接口 123
错误信息 123
数据类型 123
MMC Snap-In 124
对象安全性 124
持久性 125
属性和属性页 125
注册支持 125
Tear-Off接口 126
站点信息 126
服务供应商支持 126
运行对象 126
调度 127
调度模型与临界区 127
UI支持 127
窗口支持 128
CAxWindow 129
CAxWindow类成员 129
方法 130
操作符 135
CAxDialogImpl 136
CAxDialogImpl类成员 137
方法 137
CBindStatusCallback 140
CBindStatusCallback类成员 141
方法 142
数据成员 147
CComAggObject类成员 151
CComAggObject 151
方法 152
数据成员 154
CComApartment 155
CComApartment类成员 155
方法 155
数据成员 157
CComAutoCriticalSection类成员 158
方法 158
CComAutoCriticalSection 158
数据成员 159
CComAutoThreadModule 160
CComAutoThreadModule类成员 161
方法 161
数据成员 163
CComBSTR 165
CComBSTR数据成员 165
方法 166
操作符 170
数据成员 171
CComCachedTearOffObject类成员 172
CComCachedTearOffObject 172
方法 173
数据成员 175
CComClassFactory 176
CComClassFactory类成员 177
方法 177
CComClassFactory2 179
CComClassFactory2类成员 180
方法 181
CComClassFactoryAutoThread 184
CComClassFactoryAutoThread类成员 184
方法 185
CComClassFactorySingleton 187
CComClassFactorySingleton类成员 187
方法 188
数据成员 188
CComCoClass类成员 190
CComCoClass 190
方法 191
CComCompositeControl 194
CComCompositeControl类成员 194
方法 195
CComContainedObject 198
CComContainedObject类成员 198
方法 198
CComControl类成员 201
CComControl 201
方法 206
数据成员 226
CcomCriticalSection 243
CComCriticalSection类成员 243
方法 243
数据成员 244
CComDispatchDriver 245
CComDispatchDriver类成员 245
方法 246
操作符 249
数据成员 251
CComDynamicUnkArray 252
CComDynamicUnkArray类成员 252
方法 252
CComFakeCriticalSection 255
CComFakeCriticalSection类成员 255
方法 255
CComGlobalsThreadModel 257
CComModule类成员 258
CComModule 258
方法 259
数据成员 270
CComMultiThreadModel 272
CComMultiThreadModel类成员 272
方法 273
Typedefs 274
CComMultiThreadModeINoCS 277
CComMultiThreadModeINoCS类成员 277
方法 278
Typedefs 279
CComObject 282
CComObject类成员 282
方法 283
CComObjectGlobal 285
CComObjecGlobal类成员 285
方法 286
数据成员 287
方法 288
CComObjectNoLock 288
CComObjectNoLock类成员 288
CComObjectRoot 291
CComObjectRootEx 293
CComObjectRootEx 类成员 293
方法 294
数据成员 299
CComObjectStack 301
CComObjectStack类成员 301
方法 302
数据成员 303
CComObjectThreadModel 304
CComPolyObject 305
CComPolyObject类成员 306
方法 306
数据成员 308
CComPtr 310
函数 312
操作符 316
数据成员 318
CComQIPtr 319
CComQIPtr类成员 319
方法 320
操作符 325
数据成员 327
CComSimpleThreadAllocator类成员 328
方法 328
CComSimpleThreadAllocator 328
CComSingleThreadModel 330
CComSingleThreadModel类成员 330
方法 331
类型定义 332
CComTearOffObject 334
CComTearOffObject类成员 335
方法 336
数据成员 337
CComUnkArray类成员 339
CComUnkArray 339
方法 340
CComVariant 342
CComVariant类成员 342
方法 342
操作符 347
CContainedWindow 349
CContainedWindow类成员 351
方法 352
数据成员 357
CDialogImpl 359
CDialogImpl类成员 360
方法 360
CDynamicChain 365
CDynamicChain类成员 366
方法 366
CFirePropNotifyEvent类成员 369
方法 369
CFirePropNotifyEvent 369
CMessageMap 371
CMessageMap类成员 372
方法 372
CSnapInPropertyPageImpl 374
CSnapInPropertyPageImpl类成员 374
方法 375
数据成员 379
CRegKey 381
CRegKEy类成员 381
方法 382
操作府 388
数据成员 388
CSimpleDialong 389
CSimpleDialong类成员 389
方法 389
CSnapInItemImpl 391
CSnapInItemImpl类成员 391
方法 392
数据成员 400
CStockPropImpl 402
CWindow 404
CWindow类成员 405
方法 411
操作符 455
数据成员 455
CWindowImpl 456
CWindowImpl类成员 457
方法 458
数据成员 463
CWinTraits 464
CWinTraits类成员 465
方法 465
CWinTraitsOR 467
CWinTraits类成员 467
方法 467
CWndClassInfo 469
方法 470
CWndClassInfo类成员 470
数据成员 471
IConnectionPointContainerImpl 474
IConnectionPointContainerImpl类成员 474
方法 474
IConnectionPointImpl 476
IConnectionPointImpl类成员 476
方法 477
数据成员 478
IDataObjectImpl类成员 479
IDataObjectImpl 479
方法 480
IDispatchImpl 484
IDispatchImpl类成员 485
方法 485
数据成员 487
IDispEventImpl 488
IDispEventImpl类成员 489
方法 489
类型定义 492
IObjectSafetyImpl 493
IObjectSafetyImpl类成员 493
方法 494
数据成员 495
IObjectWithSiteImpl 496
IObjectWithSiteImpl类成员 496
方法 496
数据成员 497
方法 498
IOleControlImpl 498
IOleControlImpl类成员 498
IOleInPlaceActiveObjectImpl 500
IOleInPlaceActiveObjectImpl类成员 500
方法 501
IOleInPlaceObjectWindowlessImpl 503
IOleInPlaceObjectWindowlessImpl类成员 503
方法 504
IOleObjectImpl 507
IOleObjectImpl类成员 507
方法 508
IPerPropertyBrowsingImpl 519
IPerPropertyBrowsingImpl类成员 519
方法 520
IPersistPropertyBagImpl 522
IPersistPropertyBagImpl类成员 522
方法 523
IPersistStorageImpl类成员 524
IPersistStorageImpl 524
方法 525
IPersistStreamInitImpl 527
IPersistStreamInitImpl类成员 527
方法 528
IPointerInactiveImpl 530
IPointerInactiveImpl类成员 530
方法 531
IPropertyNotifySinkCP类成员 532
IPropertyNotifySinkCP 532
IPropertyPageImpl 533
IPropertyPageImpl类成员 533
方法 534
数据成员 538
IPropertyPage2Impl 541
IPropertyPage2Impl类成员 541
方法 542
IProvideClassInfo2Impl 543
IProvideClassInfo2Impl类成员 543
方法 544
数据成员 545
IQuickActivateImpl 546
IQuickActivateImpl类成员 546
方法 547
IRunnableObjectImpl 548
IRunnableObjectImpl类成员 548
方法 549
IServiceProviderImpl 551
IServiceProviderImpl类成员 551
方法 551
ISpecifyPropertyPagesImpl 552
ISpecifyPropertyPagesImpl类成员 552
方法 552
ISupportErrorInfoImpl 554
ISupportErrorInfoImpl类成员 554
方法 555
IViewObjectExImpl类成员 556
IViewObjectExImpl 556
方法 557
ATL宏和全局函数 561
关于ATL的老话题 645
第二篇 Microsoft VisualC++6.0 OLE DB模板库 650
OLE DB模板概览 650
第一部分 OLE DB客户模板 651
使用OLE DB客户模板 651
OLE DB客户模板系统设计 652
一般数据资源支持 653
OLE DB行集合和绑定支持 653
OLE DB表和命令支持 655
OLE DB用户记录 655
创建一个OLE DB客户 658
普通OLE DB客户程序(示例) 662
横扫一个简单的行集合 662
发出一个带参数的查询 663
在一个行集合上使用多路存取器 664
实现一个简单的客户 666
实现一个OLE DB模板客户 666
修改客户以与增强型服务器一起使用 669
经常问到的问题:使用OLE DB客户模板 672
怎样读取数据 672
怎样在一个行集合上确定数据类型 674
怎样使用模式行集合 674
怎样使用一个现存的ADO记录集合 674
怎样不用向导就可以添加对MFC应用程序的OLE DB客户支持 675
该使用哪个存储器 676
怎样从一个存储过程使用多个结果集合 676
怎样操纵一条我一无所知的命令 677
当另一张表包含此行的参考信息时怎样能更新一列 677
怎样重载一个动态存取器 678
怎样使用书签 679
怎样能检索BLOB 680
怎样能接收到报告单 681
怎样使用多路存取器 681
怎样检索一列的长度或状态 682
OLE DB客户模板列表 684
第二部分 OLE DB客户模板库参考 684
CAccessor类成员 687
方法 687
CAccessor 687
CAccessorBase 689
CAccessorBase类成员 689
方法 689
CAccessorRowset类成员 692
方法 692
CAccessorRowset 692
CArrayRowset 694
CArrayRowset类成员 694
方法 695
操作符 695
CBookMark 696
CBookMark类成员 696
方法 697
操作符 698
方法 699
CBulkRowset 699
CBulkRowset类成员 699
CCommand 704
CCommand类成员 704
方法 705
CDataSource 710
CDataSource类成员 710
方法 711
数据成员 715
CDBErrorInfo类成员 716
CDBErrorInfo 716
方法 717
数据成员 720
CDBPropIDSet 721
CDBPropIDSet类成员 721
方法 721
操作符 722
方法 723
CDBPropSet类成员 723
CDBPropSet 723
操作符 725
CDynamicAccessor 727
CDynamicAccessor类成员 727
方法 728
CDynamicParameterAccessor 736
CDynamicParameterAccessor类成员 736
方法 736
方法 740
CEnumerator 740
CEnumerator类成员 740
CEnumeratorAccessor 743
CEnumeratorAccessor类成员 743
.数据成员 743
CManualAccessor 745
CManualAccessor类成员 745
方法 745
CMultipleResults 749
CNoAssessor 750
CNoMultipleResults 751
CNoRowset 752
CRestrictions 753
CRestrictions类成员 753
方法 754
CRowset 755
CRowset类成员 755
方法 756
数据成员 765
CSession 767
CSession类成员 767
方法 768
数据成员 770
CTable 771
CTable类成员 771
方法 771
IRowsetNotifyImpl 773
模式行集合类和Typedef类 774
概览 774
模式行集合类 776
OLE OB客户模板宏 800
第三部分 OLE OB服务器模板 820
使用OLE OB服务器模板 820
OLE OB服务器模板设计 821
数据资源对象接口 821
会话对象接口 822
行集合对象接口 823
命令对象接口 824
属性图 824
用户记录 825
模式支持 826
创建一个OLE OB模板服务器 827
实现OLE OB模板服务器 830
实现简单只读服务器 830
加强简单只读服务器 834
怎样加一个接口到服务器上 847
经常问到的问题:使用OLE OB服务器模板 847
怎样在服务器中引用属性 848
怎样在服务器中加属性 849
怎样在服务器中动态地绑定列 850
怎样在服务器中支持自由穿线 852
怎样测试服务器 852
是否需要链接Oledb.lib或者Uuid.lib 853
数据转换怎样进行 853
怎样调试服务器 853
第四部分 OLE OB服务器模板库参考 855
OLE OB服务器模板列表 855
CRowsetImpl 858
CRowsetImpl类成员 859
方法 859
数据成员 863
CSimpleRow 864
CSimpleRow类成员 864
数据成员 866
方法 866
CUtlProps类成员 867
CUtlProps 867
方法 868
IAccessorImpl 871
IAccessorImpl类成员 871
方法 873
IColumnsInfoImpl类成员 874
方法 874
IColumnsInfoImpl 874
ICommandImpl 876
ICommandImpl类成员 876
方法 877
数据成员 879
ICommandPropertiesImpl 881
ICommandPropertiesImpl类成员 881
方法 881
ICommandTextImpl类成员 883
方法 883
ICommandTextImpl 883
数据成员 884
IConvertTypeImpl 885
IConvertTypeImpl类成员 885
方法 885
LDBCreateCommandImpl 887
LDBCreateCommandImpl类成员 887
方法 887
方法 889
IDBCreateSessionImpl类成员 889
IDBCreateSessionImpl 889
IDBInitializeImpl 891
IDBInitializeImpl类成员 891
方法 892
数据成员 893
IDBPropertiesImpl 894
IDBPropertiesImpl类成员 894
方法 895
IDBSchemaRowsetImpl类成员 897
IDBSchemaRowsetImpl 897
方法 898
IGetDataSourceImpl 902
IGetDataSourceImpl类成员 902
方法 902
IOpenRowsetImpl 904
IOpenRowsetImpl类成员 904
方法 904
IRowsetImpl类成员 906
IRowsetImpl 906
方法 907
数据成员 910
IRowsetInfoImpl 912
IRowsetInfoImpl类成员 912
方法 913
ISessionPropertiesImpl 915
ISessionPropertiesImpl类成员 915
方法 916
OLE DB服务器模板上的宏 917