You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/atl/active-template-library-atl-concepts.md
+27-27Lines changed: 27 additions & 27 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,85 +12,85 @@ If you do a lot of ATL programming, you will want to learn more about COM and .N
12
12
13
13
## In This Section
14
14
15
-
[Introduction to COM and ATL](../atl/introduction-to-com-and-atl.md)<br/>
15
+
[Introduction to COM and ATL](introduction-to-com-and-atl.md)<br/>
16
16
Introduces the major concepts behind the Component Object Model (COM). This article also briefly explains what ATL is and when you should use it.
17
17
18
-
[Fundamentals of ATL COM Objects](../atl/fundamentals-of-atl-com-objects.md)<br/>
18
+
[Fundamentals of ATL COM Objects](fundamentals-of-atl-com-objects.md)<br/>
19
19
Discusses the relationship among various ATL classes and how those classes are implemented.
20
20
21
-
[Dual Interfaces and ATL](../atl/dual-interfaces-and-atl.md)<br/>
21
+
[Dual Interfaces and ATL](dual-interfaces-and-atl.md)<br/>
22
22
Describes dual interfaces from an ATL perspective.
23
23
24
-
[ATL Collections and Enumerators](../atl/atl-collections-and-enumerators.md)<br/>
24
+
[ATL Collections and Enumerators](atl-collections-and-enumerators.md)<br/>
25
25
Describes the implementation and creation of collections and enumerators in ATL.
26
26
27
-
[Composite Control Fundamentals](../atl/atl-composite-control-fundamentals.md)<br/>
27
+
[Composite Control Fundamentals](atl-composite-control-fundamentals.md)<br/>
28
28
Provides step-by-step instructions for creating a composite control. A composite control is a type of ActiveX control that can contain other ActiveX controls or Windows controls.
29
29
30
-
[ATL Control Containment FAQ](../atl/atl-control-containment-faq.md)<br/>
30
+
[ATL Control Containment FAQ](atl-control-containment-faq.md)<br/>
31
31
Covers the fundamental questions related to hosting controls with ATL.
32
32
33
-
[ATL COM Property Pages](../atl/atl-com-property-pages.md)<br/>
33
+
[ATL COM Property Pages](atl-com-property-pages.md)<br/>
34
34
Shows you how to specify and implement COM property pages.
35
35
36
-
[ATL Support for DHTML Controls](../atl/atl-support-for-dhtml-controls.md)<br/>
36
+
[ATL Support for DHTML Controls](atl-support-for-dhtml-controls.md)<br/>
37
37
Provides step-by-step instructions for creating a DHTML control.
Explains what connection points are and how ATL implements them.
41
41
42
-
[Event Handling and ATL](../atl/event-handling-and-atl.md)<br/>
43
-
Describes the steps that you need to take to handle COM events using ATL's [IDispEventImpl](../atl/reference/idispeventimpl-class.md) and [IDispEventSimpleImpl](../atl/reference/idispeventsimpleimpl-class.md) classes.
42
+
[Event Handling and ATL](event-handling-and-atl.md)<br/>
43
+
Describes the steps that you need to take to handle COM events using ATL's [IDispEventImpl](reference/idispeventimpl-class.md) and [IDispEventSimpleImpl](reference/idispeventsimpleimpl-class.md) classes.
44
44
45
-
[ATL and the Free Threaded Marshaler](../atl/atl-and-the-free-threaded-marshaler.md)<br/>
45
+
[ATL and the Free Threaded Marshaler](atl-and-the-free-threaded-marshaler.md)<br/>
46
46
Provides details on the ATL Simple Object Wizard's option that allows your class to aggregate the free threaded marshaler (FTM).
47
47
48
-
[Specifying the Project's Threading Model](../atl/specifying-the-threading-model-for-a-project-atl.md)<br/>
48
+
[Specifying the Project's Threading Model](specifying-the-threading-model-for-a-project-atl.md)<br/>
49
49
Describes the macros that are available to control run-time performance related to threading in your project.
Provides code for manipulating paths and URLs in the form of [CPathT](../atl/reference/cpatht-class.md) and [CUrl](../atl/reference/curl-class.md). A thread pool, [CThreadPool](../atl/reference/cthreadpool-class.md), can be used in your own applications. This code can be found in atlpath.h and atlutil.h.
Provides code for manipulating paths and URLs in the form of [CPathT](reference/cpatht-class.md) and [CUrl](reference/curl-class.md). A thread pool, [CThreadPool](reference/cthreadpool-class.md), can be used in your own applications. This code can be found in atlpath.h and atlutil.h.
Copy file name to clipboardExpand all lines: docs/atl/active-template-library-atl-tutorial.md
+8-8Lines changed: 8 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,20 +14,20 @@ By following this tutorial, you will learn how to add a control to an ATL projec
14
14
15
15
The tutorial is divided into seven steps. You should perform each step in order as later steps depend on previously completed tasks. Before you begin, you should confirm that you have privileges required to register an ActiveX component on your particular computer. This is usually only a concern if you are running Visual Studio .NET over a Terminal Services connection.
16
16
17
-
-[Step 1: Creating the Project](../atl/creating-the-project-atl-tutorial-part-1.md)
17
+
-[Step 1: Creating the Project](creating-the-project-atl-tutorial-part-1.md)
18
18
19
-
-[Step 2: Adding a Control to Your Project](../atl/adding-a-control-atl-tutorial-part-2.md)
19
+
-[Step 2: Adding a Control to Your Project](adding-a-control-atl-tutorial-part-2.md)
20
20
21
-
-[Step 3. Adding a Property to Your Control](../atl/adding-a-property-to-the-control-atl-tutorial-part-3.md)
21
+
-[Step 3. Adding a Property to Your Control](adding-a-property-to-the-control-atl-tutorial-part-3.md)
22
22
23
-
-[Step 4: Changing Your Control's Drawing Code](../atl/changing-the-drawing-code-atl-tutorial-part-4.md)
23
+
-[Step 4: Changing Your Control's Drawing Code](changing-the-drawing-code-atl-tutorial-part-4.md)
24
24
25
-
-[Step 5: Adding an Event](../atl/adding-an-event-atl-tutorial-part-5.md)
25
+
-[Step 5: Adding an Event](adding-an-event-atl-tutorial-part-5.md)
26
26
27
-
-[Step 6: Adding a Property Page](../atl/adding-a-property-page-atl-tutorial-part-6.md)
27
+
-[Step 6: Adding a Property Page](adding-a-property-page-atl-tutorial-part-6.md)
28
28
29
-
-[Step 7: Putting Your Control on a Web Page](../atl/putting-the-control-on-a-web-page-atl-tutorial-part-7.md)
29
+
-[Step 7: Putting Your Control on a Web Page](putting-the-control-on-a-web-page-atl-tutorial-part-7.md)
Copy file name to clipboardExpand all lines: docs/mfc/a-portrait-of-the-document-view-architecture.md
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,24 +10,24 @@ Documents and views are paired in a typical MFC application. Data is stored in t
10
10
11
11
## Gaining Access to Document Data from the View
12
12
13
-
The view accesses its document's data either with the [GetDocument](../mfc/reference/cview-class.md#getdocument) function, which returns a pointer to the document, or by making the view class a C++ `friend` of the document class. The view then uses its access to the data to obtain the data when it is ready to draw or otherwise manipulate it.
13
+
The view accesses its document's data either with the [GetDocument](reference/cview-class.md#getdocument) function, which returns a pointer to the document, or by making the view class a C++ `friend` of the document class. The view then uses its access to the data to obtain the data when it is ready to draw or otherwise manipulate it.
14
14
15
-
For example, from the view's [OnDraw](../mfc/reference/cview-class.md#ondraw) member function, the view uses `GetDocument` to obtain a document pointer. Then it uses that pointer to access a `CString` data member in the document. The view passes the string to the `TextOut` function. To see the code for this example, see [Drawing in a View](../mfc/drawing-in-a-view.md).
15
+
For example, from the view's [OnDraw](reference/cview-class.md#ondraw) member function, the view uses `GetDocument` to obtain a document pointer. Then it uses that pointer to access a `CString` data member in the document. The view passes the string to the `TextOut` function. To see the code for this example, see [Drawing in a View](drawing-in-a-view.md).
16
16
17
17
## User Input to the View
18
18
19
19
The view might also interpret a mouse click within itself as either selection or editing of data. Similarly it might interpret keystrokes as data entry or editing. Suppose the user types a string in a view that manages text. The view obtains a pointer to the document and uses the pointer to pass the new data to the document, which stores it in some data structure.
20
20
21
21
## Updating Multiple Views of the Same Document
22
22
23
-
In an application with multiple views of the same document — such as a splitter window in a text editor — the view first passes the new data to the document. Then it calls the document's [UpdateAllViews](../mfc/reference/cdocument-class.md#updateallviews) member function, which tells all views of the document to update themselves, reflecting the new data. This synchronizes the views.
23
+
In an application with multiple views of the same document — such as a splitter window in a text editor — the view first passes the new data to the document. Then it calls the document's [UpdateAllViews](reference/cdocument-class.md#updateallviews) member function, which tells all views of the document to update themselves, reflecting the new data. This synchronizes the views.
24
24
25
25
### What do you want to know more about
26
26
27
-
-[Advantages of the document/view architecture](../mfc/advantages-of-the-document-view-architecture.md)
27
+
-[Advantages of the document/view architecture](advantages-of-the-document-view-architecture.md)
28
28
29
-
-[Alternatives to the document/view architecture](../mfc/alternatives-to-the-document-view-architecture.md)
29
+
-[Alternatives to the document/view architecture](alternatives-to-the-document-view-architecture.md)
This example uses a typed pointer array that contains pointers to `CPerson` objects. The array is derived from class `CObArray`, one of the nontemplate predefined classes. `GetAt` returns a pointer to a `CPerson` object. For typed pointer collection classes — arrays or lists — the first parameter specifies the base class; the second parameter specifies the type to store.
26
26
27
27
The `CTypedPtrArray` class also overloads the **[]** operator so that you can use the customary array-subscript syntax to access elements of an array. An alternative to the statement in the body of the **for** loop above is
This operator exists in both **const** and non-**const** versions. The **const** version, which is invoked for **const** arrays, can appear only on the right side of an assignment statement.
32
32
33
33
### <aname="_core_to_iterate_a_list"></a> To iterate a list
34
34
35
35
1. Use the member functions `GetHeadPosition` and `GetNext` to work your way through the list:
This example uses a typed pointer list to contain pointers to `CPerson` objects. The list declaration resembles the one for the array in the procedure [To iterate an array](#_core_to_iterate_an_array) but is derived from class `CObList`. `GetNext` returns a pointer to a `CPerson` object.
40
40
41
41
### <aname="_core_to_iterate_a_map"></a> To iterate a map
42
42
43
43
1. Use `GetStartPosition` to get to the beginning of the map and `GetNextAssoc` to repeatedly get the next key and value from the map, as shown by the following example:
This example uses a simple map template (rather than a typed pointer collection) that uses `CString` keys and stores pointers to `CPerson` objects. When you use access functions such as `GetNextAssoc`, the class provides pointers to `CPerson` objects. If you use one of the nontemplate map collections instead, you must cast the returned `CObject` pointer to a pointer to a `CPerson`.
48
48
@@ -51,10 +51,10 @@ The following procedures show how to iterate over the three main types of collec
51
51
52
52
The template solution is simpler and helps provide better type safety. The nontemplate code is more complicated, as you can see here:
1. Use the [CFile](../mfc/reference/cfile-class.md) class to get and set information about a file. One useful application is to use the `CFile` static member function **GetStatus** to determine if a file exists. **GetStatus** returns 0 if the specified file does not exist.
13
+
1. Use the [CFile](reference/cfile-class.md) class to get and set information about a file. One useful application is to use the `CFile` static member function **GetStatus** to determine if a file exists. **GetStatus** returns 0 if the specified file does not exist.
14
14
15
15
Thus, you could use the result of **GetStatus** to determine whether to use the **CFile::modeCreate** flag when opening a file, as shown by the following example:
0 commit comments