Skip to content

Commit 98ee788

Browse files
author
Michael Blome
committed
toc fix and a few links
1 parent 646ddeb commit 98ee788

21 files changed

+45
-48
lines changed

docs/atl/reference/cnonstatelessworker-class.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,15 +60,15 @@ template <class Worker> class CNonStatelessWorker
6060

6161
|Name|Description|
6262
|----------|-----------------|
63-
|[CNonStatelessWorker::RequestType](#cnonstatelessworker__requesttype)|Implementation of [WorkerArchetype::RequestType](../Topic/WorkerArchetype::RequestType.md).|
63+
|[CNonStatelessWorker::RequestType](#cnonstatelessworker__requesttype)|Implementation of [WorkerArchetype::RequestType](worker-archetype.md#workerarchetype_requesttype).|
6464

6565
### Public Methods
6666

6767
|Name|Description|
6868
|----------|-----------------|
6969
|[CNonStatelessWorker::Execute](#cnonstatelessworker__execute)|Implementation of [WorkerArchetype::Execute](../Topic/WorkerArchetype::Execute.md).|
70-
|[CNonStatelessWorker::Initialize](#cnonstatelessworker__initialize)|Implementation of [WorkerArchetype::Initialize](../Topic/WorkerArchetype::Initialize.md).|
71-
|[CNonStatelessWorker::Terminate](#cnonstatelessworker__terminate)|Implementation of [WorkerArchetype::Terminate](../Topic/WorkerArchetype::Terminate.md).|
70+
|[CNonStatelessWorker::Initialize](#cnonstatelessworker__initialize)|Implementation of [WorkerArchetype::Initialize](worker-archetype.md#workerarchetype_initialize).|
71+
|[CNonStatelessWorker::Terminate](#cnonstatelessworker__terminate)|Implementation of [WorkerArchetype::Terminate](worker-archetype.md#workerarchetype_terminate).|
7272

7373
## Remarks
7474
This class is a simple worker thread for use with [CThreadPool](../../atl/reference/cthreadpool-class.md). This class doesn't provide any request-handling capabilities of its own. Instead, it instantiates one instance of *Worker* per request and delegates the implementation of its methods to that instance.
@@ -89,10 +89,10 @@ void Execute(
8989
```
9090

9191
### Remarks
92-
This method creates an instance of the *Worker* class on the stack and calls [Initialize](../Topic/WorkerArchetype::Initialize.md) on that object. If the initialization is successful, this method also calls [Execute](../Topic/WorkerArchetype::Execute.md) and [Terminate](../Topic/WorkerArchetype::Terminate.md) on the same object.
92+
This method creates an instance of the *Worker* class on the stack and calls [Initialize](worker-archetype.md#workerarchetype_initialize) on that object. If the initialization is successful, this method also calls [Execute](../Topic/WorkerArchetype::Execute.md) and [Terminate](worker-archetype.md#workerarchetype_terminate) on the same object.
9393

9494
## <a name="cnonstatelessworker__initialize"></a> CNonStatelessWorker::Initialize
95-
Implementation of [WorkerArchetype::Initialize](../Topic/WorkerArchetype::Initialize.md).
95+
Implementation of [WorkerArchetype::Initialize](worker-archetype.md#workerarchetype_initialize).
9696

9797
```
9898
BOOL Initialize(void* /* pvParam
@@ -106,7 +106,7 @@ BOOL Initialize(void* /* pvParam
106106
This class does not do any initialization in `Initialize`.
107107

108108
## <a name="cnonstatelessworker__requesttype"></a> CNonStatelessWorker::RequestType
109-
Implementation of [WorkerArchetype::RequestType](../Topic/WorkerArchetype::RequestType.md).
109+
Implementation of [WorkerArchetype::RequestType](worker-archetype.md#workerarchetype_requesttype).
110110

111111
```
112112
typedef Worker::RequestType RequestType;
@@ -116,7 +116,7 @@ typedef Worker::RequestType RequestType;
116116
This class handles the same type of work item as the class used for the *Worker* template parameter. See [CNonStatelessWorker Overview](../../atl/reference/cnonstatelessworker-class.md) for details.
117117

118118
## <a name="cnonstatelessworker__terminate"></a> CNonStatelessWorker::Terminate
119-
Implementation of [WorkerArchetype::Terminate](../Topic/WorkerArchetype::Terminate.md).
119+
Implementation of [WorkerArchetype::Terminate](worker-archetype.md#workerarchetype_terminate).
120120

121121
```
122122
void Terminate(void* /* pvParam

docs/atl/reference/csid-class.md

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,11 @@ class CSid
9292
|||
9393
|-|-|
9494
|[operator ==](#csid__operator__eq_eq)|Tests two security descriptor objects for equality|
95-
|[operator !=](../Topic/CSid::operator%20!=.md)|Tests two security descriptor objects for inequality|
96-
|[operator \<](../Topic/CSid::operator%20%3C.md)|Compares relative value of two security descriptor objects.|
97-
|[operator >](../Topic/CSid::operator%20%3E.md)|Compares relative value of two security descriptor objects.|
98-
|[operator \<=](../Topic/CSid::operator%20%3C=.md)|Compares relative value of two security descriptor objects.|
99-
|[operator >=](../Topic/CSid::operator%20%3E=.md)|Compares relative value of two security descriptor objects.|
95+
|[operator !=](#csid__operator__neq)|Tests two security descriptor objects for inequality|
96+
|[operator \<](#csid__operator__lt_)|Compares relative value of two security descriptor objects.|
97+
|[operator >](#csid__operator__gt_)|Compares relative value of two security descriptor objects.|
98+
|[operator \<=](#csid__operator__lt__eq)|Compares relative value of two security descriptor objects.|
99+
|[operator >=](#csid__operator__gt__eq)|Compares relative value of two security descriptor objects.|
100100

101101
## Remarks
102102
The `SID` structure is a variable-length structure used to uniquely identify users or groups.
@@ -128,24 +128,21 @@ LPCTSTR AccountName() const throw(...);
128128

129129
```
130130
CSid() throw();
131-
CSid(
132-
const SID& rhs) throw(...);
133-
134-
CSid(
135-
const CSid& rhs) throw(...);
131+
CSid(const SID& rhs) throw(...);
132+
CSid(const CSid& rhs) throw(...);
136133
137-
CSid(
138-
const SID_IDENTIFIER_AUTHORITY& IdentifierAuthority,
134+
CSid(
135+
const SID_IDENTIFIER_AUTHORITY& IdentifierAuthority,
139136
BYTE nSubAuthorityCount,
140-
...) throw(...);
137+
...) throw(...);
141138
142139
explicit CSid(
143-
LPCTSTR pszAccountName,
144-
LPCTSTR pszSystem = NULL) throw(...);
140+
LPCTSTR pszAccountName,
141+
LPCTSTR pszSystem = NULL) throw(...);
145142
146143
explicit CSid(
147-
const SID* pSid,
148-
LPCTSTR pszSystem = NULL) throw(...);
144+
const SID* pSid,
145+
LPCTSTR pszSystem = NULL) throw(...);
149146
```
150147

151148
### Parameters

docs/data/odbc/access-to-odbc-and-sql.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ translation.priority.mt:
4141
# Access to ODBC and SQL
4242
The Microsoft Foundation Class Library encapsulates many Windows API calls and still lets you call any Windows API function directly. The database classes give you the same flexibility with regard to the ODBC API. While the database classes shield you from much of the complexity of ODBC, you can call ODBC API functions directly from anywhere in your program.
4343

44-
Similarly, the database classes shield you from having to work much with [SQL](../../data/odbc/sql.md), but you can use SQL directly if you want. You can customize recordset objects by passing a custom SQL statement (or setting portions of the default statement) when you open the recordset. You can also make SQL calls directly using the [ExecuteSQL](../Topic/CDatabase::ExecuteSQL.md) member function of class [CDatabase](../../mfc/reference/cdatabase-class.md).
44+
Similarly, the database classes shield you from having to work much with [SQL](../../data/odbc/sql.md), but you can use SQL directly if you want. You can customize recordset objects by passing a custom SQL statement (or setting portions of the default statement) when you open the recordset. You can also make SQL calls directly using the [ExecuteSQL](../mfc/reference/cdatabase-class.md#cdatabase__executesql) member function of class [CDatabase](../../mfc/reference/cdatabase-class.md).
4545

4646
For more information, see [ODBC: Calling ODBC API Functions Directly](../../data/odbc/odbc-calling-odbc-api-functions-directly.md) and [SQL: Making Direct SQL Calls (ODBC)](../../data/odbc/sql-making-direct-sql-calls-odbc.md).
4747

docs/data/odbc/data-source-managing-connections-odbc.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ This topic applies to the MFC ODBC classes.
130130
131131
2. Call its `OpenEx` or **Open** member function.
132132
133-
For more information about how to specify the data source if it is something other than the one you specified with a wizard, see [CDatabase::OpenEx](../Topic/CDatabase::OpenEx.md) or [CDatabase::Open](../Topic/CDatabase::Open.md) in the *MFC Reference*.
133+
For more information about how to specify the data source if it is something other than the one you specified with a wizard, see [CDatabase::OpenEx](../mfc/reference/cdatabase-class.md#cdatabase__openex) or [CDatabase::Open](../mfc/reference/cdatabase-class.md#cdatabase__open) in the *MFC Reference*.
134134
135135
## <a name="_core_disconnecting_from_a_data_source"></a> Disconnecting from a Data Source
136136
You must close any open recordsets before calling the **Close** member function of `CDatabase`. In recordsets associated with the `CDatabase` object you want to close, any pending `AddNew` or **Edit** statements are canceled and all pending transactions are rolled back.

docs/data/odbc/dynaset.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ This topic describes dynasets and discusses their [availability](#_core_availabi
6363

6464
- The ODBC cursor library DLL must not be in use for this data source.
6565

66-
If the cursor library is used, it masks some functionality of the underlying ODBC driver that is necessary for dynaset support. If you want to use dynasets (and your ODBC driver has the functionality required for dynasets, as described in the rest of this section), you can cause MFC not to load the cursor library when you create a `CDatabase` object. For more information, see [ODBC](../../data/odbc/odbc-basics.md) and the [OpenEx](../Topic/CDatabase::OpenEx.md) or [Open](../Topic/CDatabase::Open.md) member function of class `CDatabase`.
66+
If the cursor library is used, it masks some functionality of the underlying ODBC driver that is necessary for dynaset support. If you want to use dynasets (and your ODBC driver has the functionality required for dynasets, as described in the rest of this section), you can cause MFC not to load the cursor library when you create a `CDatabase` object. For more information, see [ODBC](../../data/odbc/odbc-basics.md) and the [OpenEx](../mfc/reference/cdatabase-class.md#cdatabase__openex) or [Open](../mfc/reference/cdatabase-class.md#cdatabase__open) member function of class `CDatabase`.
6767

6868
In ODBC terminology, dynasets and snapshots are referred to as cursors. A cursor is a mechanism used for keeping track of its position in a recordset.
6969

docs/data/odbc/odbc-the-odbc-cursor-library.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ This topic describes the ODBC Cursor Library and explains how to use it. For mor
8181
The second issue concerns limitations of class [CTime](../../atl-mfc-shared/reference/ctime-class.md) when used with the `RFX_Date` function to transfer time and date information to or from a table. Processing the `CTime` object imposes some overhead in the form of extra intermediate processing during the data transfer. The date range of `CTime` objects might also be too limiting for some applications. A new version of the `RFX_Date` function takes an ODBC **TIMESTAMP_STRUCT** parameter instead of a `CTime` object. For more information, see `RFX_Date` in [Macros and Globals](../Topic/Macros,%20Global%20Functions,%20and%20Global%20Variables.md) in the *MFC Reference*.
8282

8383
## <a name="_core_using_the_cursor_library"></a> Using the Cursor Library
84-
When you connect to a data source — by calling [CDatabase::OpenEx](../Topic/CDatabase::OpenEx.md) or [CDatabase::Open](../Topic/CDatabase::Open.md) — you can specify whether to use the cursor library for the data source. If you will be creating snapshots on that data source, specify the **CDatabase::useCursorLib** option in the `dwOptions` parameter to `OpenEx` or specify **TRUE** for the **bUseCursorLib** parameter to **Open** (the default value is **TRUE**). If your ODBC driver supports dynasets and you want to open dynasets on the data source, do not use the cursor library (it masks some driver functionality needed for dynasets). In that case, do not specify **CDatabase::useCursorLib** in `OpenEx` or specify **FALSE** for the **bUseCursorLib** parameter in **Open**.
84+
When you connect to a data source — by calling [CDatabase::OpenEx](../mfc/reference/cdatabase-class.md#cdatabase__openex) or [CDatabase::Open](../mfc/reference/cdatabase-class.md#cdatabase__open) — you can specify whether to use the cursor library for the data source. If you will be creating snapshots on that data source, specify the **CDatabase::useCursorLib** option in the `dwOptions` parameter to `OpenEx` or specify **TRUE** for the **bUseCursorLib** parameter to **Open** (the default value is **TRUE**). If your ODBC driver supports dynasets and you want to open dynasets on the data source, do not use the cursor library (it masks some driver functionality needed for dynasets). In that case, do not specify **CDatabase::useCursorLib** in `OpenEx` or specify **FALSE** for the **bUseCursorLib** parameter in **Open**.
8585

8686
## See Also
8787
[ODBC Basics](../../data/odbc/odbc-basics.md)

docs/data/odbc/record-field-exchange-how-rfx-works.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ This topic explains the RFX process. This is an advanced topic covering:
5858
Your recordset class's override of `DoFieldExchange` does all the work, moving data in both directions. Like dialog data exchange (DDX), RFX needs information about the data members of your class. The wizard provides the necessary information by writing a recordset-specific implementation of `DoFieldExchange` for you, based on the field data member names and data types you specify with the wizard.
5959

6060
## <a name="_core_the_record_field_exchange_process"></a> Record Field Exchange Process
61-
This section describes the sequence of RFX events as a recordset object is opened and as you add, update, and delete records. The table [Sequence of RFX Operations During Recordset Open](#_core_sequence_of_rfx_operations_during_recordset_open) and the table [Sequence of RFX Operations During Scrolling](#_core_sequence_of_rfx_operations_during_scrolling) in this topic show the process as RFX processes a **Move** command in the recordset and as RFX manages an update. During these processes, [DoFieldExchange](../Topic/CRecordset::DoFieldExchange.md) is called to perform many different operations. The **m_nOperation** data member of the [CFieldExchange](../../mfc/reference/cfieldexchange-class.md) object determines which operation is requested. You might find it helpful to read [Recordset: How Recordsets Select Records (ODBC)](../../data/odbc/recordset-how-recordsets-select-records-odbc.md) and [Recordset: How Recordsets Update Records (ODBC)](../../data/odbc/recordset-how-recordsets-update-records-odbc.md) before you read this material.
61+
This section describes the sequence of RFX events as a recordset object is opened and as you add, update, and delete records. The table [Sequence of RFX Operations During Recordset Open](#_core_sequence_of_rfx_operations_during_recordset_open) and the table [Sequence of RFX Operations During Scrolling](#_core_sequence_of_rfx_operations_during_scrolling) in this topic show the process as RFX processes a **Move** command in the recordset and as RFX manages an update. During these processes, [DoFieldExchange](../mfc/reference/crecordset-class.md#crecordset__dofieldexchange) is called to perform many different operations. The **m_nOperation** data member of the [CFieldExchange](../../mfc/reference/cfieldexchange-class.md) object determines which operation is requested. You might find it helpful to read [Recordset: How Recordsets Select Records (ODBC)](../../data/odbc/recordset-how-recordsets-select-records-odbc.md) and [Recordset: How Recordsets Update Records (ODBC)](../../data/odbc/recordset-how-recordsets-update-records-odbc.md) before you read this material.
6262

6363
### <a name="_mfc_rfx.3a_.initial_binding_of_columns_and_parameters"></a> RFX: Initial Binding of Columns and Parameters
6464
The following RFX activities occur, in the order shown, when you call a recordset object's [Open](../Topic/CRecordset::Open.md) member function:
@@ -101,7 +101,7 @@ This topic explains the RFX process. This is an advanced topic covering:
101101
### <a name="_mfc_rfx.3a_.adding_new_records_and_editing_existing_records"></a> RFX: Adding New Records and Editing Existing Records
102102
If you add a new record, the recordset operates as an edit buffer to build up the contents of the new record. As with adding records, editing records involves changing the values of the recordset's field data members. From the RFX perspective, the sequence is as follows:
103103

104-
1. Your call to the recordset's [AddNew](../Topic/CRecordset::AddNew.md) or [Edit](../Topic/CRecordset::Edit.md) member function causes RFX to store the current edit buffer so it can be restored later.
104+
1. Your call to the recordset's [AddNew](../mfc/reference/crecordset-class.md#crecordset__addnew) or [Edit](../Topic/CRecordset::Edit.md) member function causes RFX to store the current edit buffer so it can be restored later.
105105

106106
2. `AddNew` or **Edit** prepares the fields in the edit buffer so RFX can detect changed field data members.
107107

@@ -139,4 +139,4 @@ This topic explains the RFX process. This is an advanced topic covering:
139139
[MFC ODBC Consume](../../mfc/reference/adding-an-mfc-odbc-consumer.md)
140140
[Macros, Global Functions, and Global Variables](../Topic/Macros,%20Global%20Functions,%20and%20Global%20Variables.md)
141141
[CFieldExchange Class](../../mfc/reference/cfieldexchange-class.md)
142-
[CRecordset::DoFieldExchange](../Topic/CRecordset::DoFieldExchange.md)
142+
[CRecordset::DoFieldExchange](../mfc/reference/crecordset-class.md#crecordset__dofieldexchange)

docs/data/odbc/record-field-exchange-rfx.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ The MFC ODBC database classes automate moving data between the data source and a
4242
> [!NOTE]
4343
> If you have implemented bulk row fetching in a derived `CRecordset` class, the framework uses the bulk record field exchange (Bulk RFX) mechanism to transfer data. For more information, see [Recordset: Fetching Records in Bulk (ODBC)](../../data/odbc/recordset-fetching-records-in-bulk-odbc.md).
4444
45-
RFX is similar to dialog data exchange (DDX). Moving data between a data source and the field data members of a recordset requires multiple calls to the recordset's [DoFieldExchange](../Topic/CRecordset::DoFieldExchange.md) function and considerable interaction between the framework and [ODBC](../../data/odbc/odbc-basics.md). The RFX mechanism is type-safe and saves you the work of calling ODBC functions such as **::SQLBindCol**. For more information about DDX, see [Dialog Data Exchange and Validation](../../mfc/dialog-data-exchange-and-validation.md).
45+
RFX is similar to dialog data exchange (DDX). Moving data between a data source and the field data members of a recordset requires multiple calls to the recordset's [DoFieldExchange](../mfc/reference/crecordset-class.md#crecordset__dofieldexchange) function and considerable interaction between the framework and [ODBC](../../data/odbc/odbc-basics.md). The RFX mechanism is type-safe and saves you the work of calling ODBC functions such as **::SQLBindCol**. For more information about DDX, see [Dialog Data Exchange and Validation](../../mfc/dialog-data-exchange-and-validation.md).
4646

4747
RFX is mostly transparent to you. If you declare your recordset classes with the MFC Application Wizard or **Add Class** (as described in [Adding an MFC ODBC Consumer](../../mfc/reference/adding-an-mfc-odbc-consumer.md)), RFX is built into them automatically. Your recordset class must be derived from the base class `CRecordset` supplied by the framework. The MFC Application Wizard lets you create an initial recordset class. **Add Class** lets you add other recordset classes as you need them. For more information and examples, see [Adding an MFC ODBC Consumer](../../mfc/reference/adding-an-mfc-odbc-consumer.md).
4848

0 commit comments

Comments
 (0)