Skip to content

Commit 646ddeb

Browse files
author
Michael Blome
committed
fixed to hub page and whats new and some atl links
1 parent 7343e5d commit 646ddeb

11 files changed

Lines changed: 95 additions & 94 deletions

docs/atl/atl-utilities-reference.md

Lines changed: 49 additions & 50 deletions
Large diffs are not rendered by default.

docs/atl/example-implementing-a-property-page.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ This example shows how to build a property page that displays (and allows you to
8888

8989
[!code-cpp[NVC_ATL_Windowing#73](../atl/codesnippet/CPP/example-implementing-a-property-page_1.h)]
9090

91-
This code responds to changes made to the edit control or check box by calling [IPropertyPageImpl::SetDirty](../Topic/IPropertyPageImpl::SetDirty.md), which informs the page site that the page has changed. Typically the page site will respond by enabling or disabling an **Apply** button on the property page frame.
91+
This code responds to changes made to the edit control or check box by calling [IPropertyPageImpl::SetDirty](../atl/reference/ipropertypageimpl-class.md#ipropertypageimpl__setdirty), which informs the page site that the page has changed. Typically the page site will respond by enabling or disabling an **Apply** button on the property page frame.
9292

9393
> [!NOTE]
9494
> In your own property pages, you might need to keep track of precisely which properties have been altered by the user so that you can avoid updating properties that haven't been changed. This example implements that code by keeping track of the original property values and comparing them with the current values from the UI when it's time to apply the changes.
@@ -103,7 +103,7 @@ This example shows how to build a property page that displays (and allows you to
103103
[!code-cpp[NVC_ATL_Windowing#75](../atl/codesnippet/CPP/example-implementing-a-property-page_3.h)]
104104

105105
## <a name="vcconoverriding_ipropertypageimpl_setobjects"></a> Overriding IPropertyPageImpl::SetObjects
106-
The first `IPropertyPageImpl` method that you need to override is [SetObjects](../Topic/IPropertyPageImpl::SetObjects.md). Here you'll add code to check that only a single object has been passed and that it supports the **Document** interface that you're expecting:
106+
The first `IPropertyPageImpl` method that you need to override is [SetObjects](../atl/reference/ipropertypageimpl-class.md#ipropertypageimpl__setobjects). Here you'll add code to check that only a single object has been passed and that it supports the **Document** interface that you're expecting:
107107

108108
[!code-cpp[NVC_ATL_Windowing#76](../atl/codesnippet/CPP/example-implementing-a-property-page_4.h)]
109109

@@ -117,19 +117,19 @@ This example shows how to build a property page that displays (and allows you to
117117

118118
[!code-cpp[NVC_ATL_Windowing#77](../atl/codesnippet/CPP/example-implementing-a-property-page_5.h)]
119119

120-
The base class implementation of the [Activate](../Topic/IPropertyPageImpl::Activate.md) method is responsible for creating the dialog box and its controls, so you can override this method and add your own initialization after calling the base class:
120+
The base class implementation of the [Activate](../atl/reference/ipropertypageimpl-class.md#Activate.md) method is responsible for creating the dialog box and its controls, so you can override this method and add your own initialization after calling the base class:
121121

122122
[!code-cpp[NVC_ATL_Windowing#78](../atl/codesnippet/CPP/example-implementing-a-property-page_6.h)]
123123

124124
This code uses the COM methods of the **Document** interface to get the properties that you're interested in. It then uses the Win32 API wrappers provided by [CDialogImpl](../atl/reference/cdialogimpl-class.md) and its base classes to display the property values to the user.
125125

126126
## <a name="vcconoverride_ipropertypageimpl_apply"></a> Overriding IPropertyPageImpl::Apply
127-
When users want to apply their changes to the objects, the property page site will call the [Apply](../Topic/IPropertyPageImpl::Apply.md) method. This is the place to do the reverse of the code in **Activate** — whereas **Activate** took values from the object and pushed them into the controls on the property page, **Apply** takes values from the controls on the property page and pushes them into the object.
127+
When users want to apply their changes to the objects, the property page site will call the [Apply](../atl/reference/ipropertypageimpl-class.md#ipropertypageimpl__apply) method. This is the place to do the reverse of the code in **Activate** — whereas **Activate** took values from the object and pushed them into the controls on the property page, **Apply** takes values from the controls on the property page and pushes them into the object.
128128

129129
[!code-cpp[NVC_ATL_Windowing#79](../atl/codesnippet/CPP/example-implementing-a-property-page_7.h)]
130130

131131
> [!NOTE]
132-
> The check against [m_bDirty](../Topic/IPropertyPageImpl::m_bDirty.md) at the beginning of this implementation is an initial check to avoid unnecessary updates of the objects if **Apply** is called more than once. There are also checks against each of the property values to ensure that only changes result in a method call to the **Document**.
132+
> The check against [m_bDirty](../atl/reference/ipropertypageimpl-class.md#ipropertypageimpl__m_bDirty.md) at the beginning of this implementation is an initial check to avoid unnecessary updates of the objects if **Apply** is called more than once. There are also checks against each of the property values to ensure that only changes result in a method call to the **Document**.
133133
134134
> [!NOTE]
135135
> **Document** exposes **FullName** as a read-only property. To update the file name of the document based on changes made to the property page, you have to use the **Save** method to save the file with a different name. Thus, the code in a property page doesn't have to limit itself to getting or setting properties.

docs/atl/properties-and-property-pages-classes.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ translation.priority.ht:
3939
# Properties and Property Pages Classes
4040
The following classes support properties and property pages:
4141

42-
- [CComDispatchDriver](../Topic/CComDispatchDriver.md) Retrieves or sets an object's properties through an `IDispatch` pointer.
42+
- [CComDispatchDriver](../atl/reference/atl-typedefs.md#ccomdispatchdriver) Retrieves or sets an object's properties through an `IDispatch` pointer.
4343

4444
- [CStockPropImpl](../atl/reference/cstockpropimpl-class.md) Implements the stock properties supported by ATL.
4545

docs/atl/reference/atl-drawinfo-structure.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ struct ATL_DRAWINFO {
110110
## See Also
111111
[Structures](../../atl/reference/atl-structures.md)
112112
[IViewObject::Draw](http://msdn.microsoft.com/library/windows/desktop/ms688655)
113-
[CComControlBase::OnDrawAdvanced](../Topic/CComControlBase::OnDrawAdvanced.md)
113+
[CComControlBase::OnDrawAdvanced](../../atl/reference/ccomcontrolbase-class.md#ccomcontrolbase__ondrawadvanced)
114114

115115

116116

docs/atl/reference/atl-functions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ To find an ATL function by category, see the following topics.
8181
Provide support for `_AtlCreateWndData` structure operations.
8282

8383
## See Also
84-
[ATL Functions Alphabetical Reference](../Topic/ATL%20Functions%20Alphabetical%20Reference.md)
84+
8585
[ATL COM Desktop Components](../../atl/atl-com-desktop-components.md)
8686
[Macros](../../atl/reference/atl-macros.md)
8787
[Global Variables](../../atl/reference/atl-global-variables.md)

docs/atl/reference/ccommultithreadmodel-class.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ class CComMultiThreadModel
6565
|[CComMultiThreadModel::Increment](#ccommultithreadmodel__increment)|(Static) Increments the value of the specified variable in a thread-safe manner.|
6666

6767
## Remarks
68-
Typically, you use `CComMultiThreadModel` through one of two `typedef` names, either [CComObjectThreadModel](../Topic/ATL%20Typedefs.md#ccomobjectthreadmodel or [CComGlobalsThreadModel](../Topic/ATL%20Typedefs.md#ccomglobalsthreadmodel. The class referenced by each `typedef` depends on the threading model used, as shown in the following table:
68+
Typically, you use `CComMultiThreadModel` through one of two `typedef` names, either [CComObjectThreadModel](atl-typedefs.md#ccomobjectthreadmodel or [CComGlobalsThreadModel](atl-typedefs.md#ccomglobalsthreadmodel. The class referenced by each `typedef` depends on the threading model used, as shown in the following table:
6969

7070
|typedef|Single threading|Apartment threading|Free threading|
7171
|-------------|----------------------|-------------------------|--------------------|
@@ -74,20 +74,20 @@ class CComMultiThreadModel
7474

7575
S= `CComSingleThreadModel`; M= `CComMultiThreadModel`
7676

77-
`CComMultiThreadModel` itself defines three `typedef` names. `AutoCriticalSection` and `CriticalSection` reference classes that provide methods for obtaining and releasing ownership of a critical section. `ThreadModelNoCS` references class [CComMultiThreadModelNoCS](../Topic/CComMultiThreadModelNoCS%20Class.md).
77+
`CComMultiThreadModel` itself defines three `typedef` names. `AutoCriticalSection` and `CriticalSection` reference classes that provide methods for obtaining and releasing ownership of a critical section. `ThreadModelNoCS` references class [CComMultiThreadModelNoCS(ccommultithreadmodelnocs-class.md).
7878

7979
## Requirements
8080
**Header:** atlbase.h
8181

8282
## <a name="ccommultithreadmodel__autocriticalsection"></a> CComMultiThreadModel::AutoCriticalSection
83-
When using `CComMultiThreadModel`, the `typedef` name `AutoCriticalSection` references class [CComAutoCriticalSection](../Topic/CComAutoCriticalSection%20Class.md), which provides methods for obtaining and releasing ownership of a critical section object.
83+
When using `CComMultiThreadModel`, the `typedef` name `AutoCriticalSection` references class [CComAutoCriticalSection](iccomautocriticalsection-class.md), which provides methods for obtaining and releasing ownership of a critical section object.
8484

8585
```
8686
typedef CComAutoCriticalSection AutoCriticalSection;
8787
```
8888

8989
### Remarks
90-
[CComSingleThreadModel](../Topic/CComSingleThreadModel%20Class.md) and [CComMultiThreadModelNoCS](../Topic/CComMultiThreadModelNoCS%20Class.md) also contain definitions for `AutoCriticalSection`. The following table shows the relationship between the threading model class and the critical section class referenced by `AutoCriticalSection`:
90+
[CComSingleThreadModel](ccomsinglethreadmodel-class.md) and [CComMultiThreadModelNoCS](ccommultithreadmodelnocs-class.md) also contain definitions for `AutoCriticalSection`. The following table shows the relationship between the threading model class and the critical section class referenced by `AutoCriticalSection`:
9191

9292
|Class defined in|Class referenced|
9393
|----------------------|----------------------|
@@ -98,7 +98,7 @@ typedef CComAutoCriticalSection AutoCriticalSection;
9898
In addition to `AutoCriticalSection`, you can use the `typedef` name [CriticalSection](#ccommultithreadmodel__criticalsection). You should not specify `AutoCriticalSection` in global objects or static class members if you want to eliminate the CRT startup code.
9999

100100
### Example
101-
The following code is modeled after [CComObjectRootEx](../Topic/CComObjectRootEx%20Class.md), and demonstrates `AutoCriticalSection` being used in a threading environment.
101+
The following code is modeled after [CComObjectRootEx](ccomobjectrootex-class.md), and demonstrates `AutoCriticalSection` being used in a threading environment.
102102

103103
<!-- FIXME [!CODE [NVC_ATL_COM#36](../CodeSnippet/VS_Snippets_Cpp/NVC_ATL_COM#36)] -->
104104

@@ -119,14 +119,14 @@ typedef CComAutoCriticalSection AutoCriticalSection;
119119
|`Lock`|Does nothing; there is no critical section to lock.|Does nothing; there is no critical section to lock.|
120120

121121
## <a name="ccommultithreadmodel__criticalsection"></a> CComMultiThreadModel::CriticalSection
122-
When using `CComMultiThreadModel`, the `typedef` name `CriticalSection` references class [CComCriticalSection](../Topic/CComCriticalSection%20Class.md), which provides methods for obtaining and releasing ownership of a critical section object.
122+
When using `CComMultiThreadModel`, the `typedef` name `CriticalSection` references class [CComCriticalSection](ccomcriticalsection-class.md), which provides methods for obtaining and releasing ownership of a critical section object.
123123

124124
```
125125
typedef CComCriticalSection CriticalSection;
126126
```
127127

128128
### Remarks
129-
[CComSingleThreadModel](../Topic/CComSingleThreadModel%20Class.md) and [CComMultiThreadModelNoCS](../Topic/CComMultiThreadModelNoCS%20Class.md) also contain definitions for `CriticalSection`. The following table shows the relationship between the threading model class and the critical section class referenced by `CriticalSection`:
129+
[CComSingleThreadModel](ccomsinglethreadmodel-class.md) and [CComMultiThreadModelNoCS](ccommultithreadmodelnocs-class.md) also contain definitions for `CriticalSection`. The following table shows the relationship between the threading model class and the critical section class referenced by `CriticalSection`:
130130

131131
|Class defined in|Class referenced|
132132
|----------------------|----------------------|
@@ -174,7 +174,7 @@ static ULONG WINAPI Increment(LPLONG p) throw ();
174174
**InterlockedIncrement** prevents more than one thread from simultaneously using this variable.
175175

176176
## <a name="ccommultithreadmodel__threadmodelnocs"></a> CComMultiThreadModel::ThreadModelNoCS
177-
When using `CComMultiThreadModel`, the `typedef` name `ThreadModelNoCS` references class [CComMultiThreadModelNoCS](../Topic/CComMultiThreadModelNoCS%20Class.md).
177+
When using `CComMultiThreadModel`, the `typedef` name `ThreadModelNoCS` references class [CComMultiThreadModelNoCS](ccommultithreadmodelnocs-class.md).
178178

179179
```
180180
typedef CComMultiThreadModelNoCS ThreadModelNoCS;
@@ -183,7 +183,7 @@ typedef CComMultiThreadModelNoCS ThreadModelNoCS;
183183
### Remarks
184184
`CComMultiThreadModelNoCS` provides thread-safe methods for incrementing and decrementing a variable; however, it does not provide a critical section.
185185

186-
[CComSingleThreadModel](../Topic/CComSingleThreadModel%20Class.md) and `CComMultiThreadModelNoCS` also contain definitions for `ThreadModelNoCS`. The following table shows the relationship between the threading model class and the class referenced by `ThreadModelNoCS`:
186+
[CComSingleThreadModel](ccomsinglethreadmodel-class.md) and `CComMultiThreadModelNoCS` also contain definitions for `ThreadModelNoCS`. The following table shows the relationship between the threading model class and the class referenced by `ThreadModelNoCS`:
187187

188188
|Class defined in|Class referenced|
189189
|----------------------|----------------------|
@@ -195,7 +195,7 @@ typedef CComMultiThreadModelNoCS ThreadModelNoCS;
195195
See [CComMultiThreadModel::AutoCriticalSection](#ccommultithreadmodel__autocriticalsection).
196196

197197
## See Also
198-
[CComSingleThreadModel Class](../Topic/CComSingleThreadModel%20Class.md)
199-
[CComAutoCriticalSection Class](../Topic/CComAutoCriticalSection%20Class.md)
200-
[CComCriticalSection Class](../Topic/CComCriticalSection%20Class.md)
201-
[Class Overview](../Topic/ATL%20Class%20Overview.md)
198+
[CComSingleThreadModel Class](ccomsinglethreadmodel-class.md)
199+
[CComAutoCriticalSection Class](ccomautocriticalsection-class.md)
200+
[CComCriticalSection Class](ccomcriticalsection-class.md)
201+
[Class Overview](../atl-class-overview.md)

docs/atl/threading-models-and-critical-sections-classes.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@ The following classes define a threading model and critical section:
5050

5151
- [CComSingleThreadModel](../atl/reference/ccomsinglethreadmodel-class.md) Provides methods for incrementing and decrementing a variable. Does not provide a critical section.
5252

53-
- [CComObjectThreadModel](../Topic/CComObjectThreadModel.md) Determines the appropriate threading-model class for a single object class.
53+
- [CComObjectThreadModel](../atl/reference/atl-typedefs.md#ccomobjectthreadmodel) Determines the appropriate threading-model class for a single object class.
5454

55-
- [CComGlobalsThreadModel](../Topic/CComGlobalsThreadModel.md) Determines the appropriate threading-model class for an object that is globally available.
55+
- [CComGlobalsThreadModel](../atl/reference/atl-typedefs.md#ccomglobalsthreadmodel) Determines the appropriate threading-model class for an object that is globally available.
5656

5757
- [CComAutoCriticalSection](../atl/reference/ccomautocriticalsection-class.md) Contains methods for obtaining and releasing a critical section. The critical section is automatically initialized.
5858

docs/atl/using-replaceable-parameters-the-registrar-s-preprocessor.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ Replaceable parameters allow a Registrar's client to specify run-time data. To d
5959
> In a Registrar script, 4K is the maximum token size. (A token is any recognizable element in the syntax.) This includes tokens that were created or expanded by the preprocessor.
6060
6161
> [!NOTE]
62-
> To substitute replacement values at run time, remove the call in the script to the [DECLARE_REGISTRY_RESOURCE](http://msdn.microsoft.com/Library/7ac11498-8ee2-4156-8df2-7076f7ddda8b) or [DECLARE_REGISTRY_RESOURCEID](http://msdn.microsoft.com/Library/65bf3576-5396-416e-ba48-e14b3236c49b) macro. Instead, replace it with your own `UpdateRegistry` method that calls [CAtlModule::UpdateRegistryFromResourceD](../Topic/CAtlModule::UpdateRegistryFromResourceD.md) or [CAtlModule::UpdateRegistryFromResourceS](../Topic/CAtlModule::UpdateRegistryFromResourceS.md), and pass your array of **_ATL_REGMAP_ENTRY** structures. Your array of **_ATL_REGMAP_ENTRY** must have at least one entry that is set to {**NULL**,**NULL**}, and this entry should always be the last entry. Otherwise, an access violation error will be generated when **UpdateRegistryFromResource** is called.
62+
> To substitute replacement values at run time, remove the call in the script to the [DECLARE_REGISTRY_RESOURCE](../atl/reference/registry-macros.md#declare_registry_resource) or [DECLARE_REGISTRY_RESOURCEID](../atl/reference/registry-macros.md#declare_registry_resourceid) macro. Instead, replace it with your own `UpdateRegistry` method that calls [CAtlModule::UpdateRegistryFromResourceD](../atl/reference/catlmodule.catlmodulemd#catlmodule__updateregistryfromresourced) or [CAtlModule::UpdateRegistryFromResourceS](../atl/reference/catlmodule.catlmodulemd#catlmodule__updateregistryfromresources), and pass your array of **_ATL_REGMAP_ENTRY** structures. Your array of **_ATL_REGMAP_ENTRY** must have at least one entry that is set to {**NULL**,**NULL**}, and this entry should always be the last entry. Otherwise, an access violation error will be generated when **UpdateRegistryFromResource** is called.
6363
6464
> [!NOTE]
6565
> When building a project that outputs an executable, ATL automatically adds quotation marks around the path name created at run time with the **%MODULE%** registrar script parameter. If you do not want the path name to include the quotation marks, use the new **%MODULE_RAW%** parameter instead.

0 commit comments

Comments
 (0)