|
1 | 1 | ---
|
2 |
| -description: "Learn more about: Add a method" |
| 2 | +description: "Learn more about: Add a method to an interface in a Microsoft Visual Studio C++ project" |
3 | 3 | title: "Add a method"
|
4 |
| -ms.date: "11/09/2018" |
| 4 | +ms.date: "03/31/2022" |
5 | 5 | f1_keywords: ["vc.codewiz.method.overview", "vc.codewiz.method.idlattrib"]
|
6 | 6 | helpviewer_keywords: ["add method wizard [C++]", "methods [C++], adding", "methods [C++], adding using wizards", "IDL attributes, add method wizard"]
|
7 |
| -ms.assetid: 4ba4e45f-fa38-4d5e-af44-cbec0a7ab558 |
| 7 | +ms.custom: devdivchpfy22 |
8 | 8 | ---
|
9 | 9 | # Add a method
|
10 | 10 |
|
11 |
| -You can use the [add method wizard](#add-method-wizard) to add a method to an interface in your project. If the project contains a class associated with the interface, the wizard modifies the class, too. |
| 11 | +Use the [add method wizard](#add-method-wizard) to add a method to an interface in your project. If the project contains a class associated with the interface, the wizard also adds the method to the class. |
12 | 12 |
|
13 |
| -**To add a method to your object:** |
| 13 | +**Add a method to your interface:** |
14 | 14 |
|
15 |
| -1. In **Class View**, expand the project node to display the interface to which you want to add the method. |
| 15 | +1. From the Visual Studio main menu, choose **View** > **Class view**. In the **Class View** pane, expand the project node to display the interface you want to add the method to. |
16 | 16 |
|
17 | 17 | > [!NOTE]
|
18 |
| - > You can also add methods to dispinterfaces, which, unless the project is attributed, are located under the library node. |
| 18 | + > You can also add methods to dispinterfaces. Unless the project is attributed, dispinterfaces are located under the library node. |
19 | 19 |
|
20 | 20 | 1. Right-click the name of the interface.
|
21 | 21 |
|
22 |
| -1. On the shortcut menu, choose **Add**, and then choose **Add Method**. |
| 22 | +1. On the shortcut menu, choose **Add** > **Add Method**. |
23 | 23 |
|
24 |
| -1. In the Add Method Wizard, provide the information to create the method. |
| 24 | +1. In the **Add Method** wizard dialog box, provide the information to create the method as described in the next section. |
25 | 25 |
|
26 |
| -1. Specify any interface definition language settings for this method in the [IDL attributes](#idl-attributes-add-method-wizard) page of the wizard. |
27 |
| - |
28 |
| -1. Select **Finish** to add the method. |
29 |
| - |
30 |
| -## In this section |
31 |
| - |
32 |
| -- [Add method wizard](#add-method-wizard) |
33 |
| -- [IDL attributes, add method wizard](#idl-attributes-add-method-wizard) |
| 26 | +1. Select **OK** to add the method. |
34 | 27 |
|
35 | 28 | ## Add method wizard
|
36 | 29 |
|
37 |
| -Use this wizard to add a method to an interface. Depending on the project type or interface type to which you're adding a method, the wizard displays different options. |
| 30 | +Add a method to an interface by using the add method wizard: |
38 | 31 |
|
39 |
| -### Names |
40 |
| - |
41 |
| -- **Return type** |
42 |
| - |
43 |
| - The data type returned by the method. `HRESULT` is recommended for all interface types, because it provides a standard way to return errors. |
44 |
| - |
45 |
| - |Interface type|Description| |
46 |
| - |--------------------|-----------------| |
47 |
| - |Dual interface|`HRESULT`. Unchangeable.| |
48 |
| - |Custom interface|`HRESULT`. Unchangeable.| |
49 |
| - |Local custom interface|Provide your own return type or select from the list.| |
50 |
| - |Dispinterface|Provide your own return type or select from the list.| |
51 |
| - |MFC ActiveX control dispinterface|If you implement a stock method, the return type is set to the appropriate value and is unchangeable. If you select a method from the **Method name** list and select **Custom** under **Select method type**, select a return type from the list.| |
| 32 | +:::image type="content" source="../ide/media/add-method-wizard.png" alt-text="Screenshot of Add method wizard. Method name is aMethod, return type is H RESULT. Two parameters are defined: int x, bool clip"::: |
52 | 33 |
|
53 | 34 | - **Method name**
|
54 | 35 |
|
55 |
| - Sets the name for the method. |
56 |
| - |
57 |
| - |Interface type|Description| |
58 |
| - |--------------------|-----------------| |
59 |
| - |ATL dual interface, custom interface, and local custom interface|Provide your own method name.| |
60 |
| - |MFC dispinterface|Provide your own method name or select a suggested method name from the list. If you select a name from the list, the appropriate value appears in the **Return type** box, and it's unchangeable.| |
61 |
| - |MFC ActiveX control dispinterface|Provide your own or select either of the stock methods [DoClick](../mfc/reference/colecontrol-class.md#doclick) and [Refresh](../mfc/reference/colecontrol-class.md#refresh). For more information, see [MFC ActiveX controls: Adding stock methods](../mfc/mfc-activex-controls-adding-stock-methods.md).| |
62 |
| - |
63 |
| -- **Method type** |
64 |
| - |
65 |
| - Available only for MFC ActiveX controls. If you provide a method name in the **Method name** box, rather than selecting a method from the list, this box is unavailable. |
66 |
| - |
67 |
| - If you select one of the methods in the **Method name** list, select either the stock implementation or a custom implementation. |
68 |
| - |
69 |
| - |Method type|Description| |
70 |
| - |-----------------|-----------------| |
71 |
| - |**Stock**|The default. Inserts the stock implementation of the method you select in the **Method name** list. **Return type** is unchangeable if you select **Stock**.| |
72 |
| - |**Custom**|Inserts a stub implementation of the method selected in the **Method name** list. For custom method types, you can provide your own return type, or you can select one from the **Return type** list.| |
73 |
| - |
74 |
| -- **Internal name** |
75 |
| - |
76 |
| - Available for only custom methods added to an MFC dispinterface. Sets the name used in the dispatch map, the header (.h) file, and the implementation (.cpp) file. By default, this name is the same as **Method name**. You can change the method name if you're working with an MFC dispinterface or if you're adding a custom method to an MFC ActiveX control dispinterface. |
77 |
| - |
78 |
| - |Interface type|Description| |
79 |
| - |--------------------|-----------------| |
80 |
| - |ATL dual interface, custom interface, and local custom interface|Not available.| |
81 |
| - |MFC dispinterface|Set to the method name by default. You can edit the internal name.| |
82 |
| - |MFC ActiveX control dispinterface|You can set the internal name only for custom methods. Stock methods don't use an internal name.| |
83 |
| - |
84 |
| -- **Parameter attributes** |
85 |
| - |
86 |
| - Sets any additional attributes for the parameter specified in **Parameter name**. |
87 |
| - |
88 |
| - |Parameter attribute|Description|Allowed combinations| |
89 |
| - |-------------------------|-----------------|--------------------------| |
90 |
| - |**In**|Indicates that the parameter is passed from the calling procedure to the called procedure.|`in` only<br /><br /> `in` and `out`| |
91 |
| - |**Out**|Indicates that the pointer parameter is returned from the called procedure to the calling procedure (from the server to the client).|`out` only<br /><br /> `in` and `out`<br /><br /> `out` and `retval`| |
92 |
| - |**Retval**|Indicates that the parameter receives the return value of the member.|`retval` and `out`| |
| 36 | + Provide the method name. |
93 | 37 |
|
94 |
| -- **Parameter type** |
95 |
| - |
96 |
| - Sets the data type of the parameter. Select the type from the list. |
97 |
| - |
98 |
| -- **Parameter name** |
99 |
| - |
100 |
| - Sets the name of a parameter to pass through your method. After you type the name, select **Add** to add it to the list of parameters that will pass through your method. If you don't provide a parameter name, the wizard ignores any parameter attributes (ATL only) or **Parameter type** selections. |
101 |
| - |
102 |
| - Once you select **Add**, the parameter name appears in **Parameter list**. |
103 |
| - |
104 |
| - > [!NOTE] |
105 |
| - > If you supply a parameter name and then select **Finish** before you select **Add**, the parameter isn't added to the method. You must find the method and insert the parameter manually. |
106 |
| -
|
107 |
| -- **Add** |
108 |
| - |
109 |
| - Adds the parameter you specify in **Parameter name**, and its type and parameter attributes, to **Parameter list**. Select **Add** to add a parameter to the list. |
110 |
| - |
111 |
| -- **Remove** |
112 |
| - |
113 |
| - Removes the parameter you select in **Parameter list** from the list. |
114 |
| - |
115 |
| -- **Parameter list** |
116 |
| - |
117 |
| - Displays all parameters and their modifiers and types currently added for the method. As you add parameters, the wizard updates **Parameter list** to display each parameter, with its modifier and type. |
118 |
| - |
119 |
| -## IDL attributes, add method wizard |
120 |
| - |
121 |
| -Use this page of the Add Method Wizard to specify any interface definition language (IDL) settings for the method. |
122 |
| - |
123 |
| -- `id` |
124 |
| - |
125 |
| - Sets the numerical ID that identifies the method. For more information, see [id](/windows/win32/Midl/id) in the *MIDL Reference*. |
126 |
| - |
127 |
| - This box is unavailable for custom interfaces and isn't available for MFC dispinterfaces. |
128 |
| - |
129 |
| -- `call_as` |
| 38 | +- **Return type** |
130 | 39 |
|
131 |
| - Specifies the name of a remote method to which this local method can be mapped. For more information, see [call_as](/windows/win32/Midl/call-as) in the *MIDL Reference*. |
| 40 | + Type the return type or select it from the drop-down list. |
132 | 41 |
|
133 |
| - Not available for MFC dispinterfaces. |
| 42 | +- **Parameters** |
134 | 43 |
|
135 |
| -- `helpcontext` |
| 44 | + Displays the method's parameters, modifiers, and types. The wizard updates the **Parameters** list as you add parameters. |
136 | 45 |
|
137 |
| - Specifies a context ID that lets the user view information about this method in the Help file. For more information, see [helpcontext](/windows/win32/Midl/helpcontext) in the *MIDL Reference*. |
| 46 | +- **+** |
138 | 47 |
|
139 |
| - Not available for MFC dispinterfaces. |
| 48 | + Add a parameter. In **Parameters**, type the parameter type, name, and any modifiers. For example, `int x`, and choose **OK**. |
140 | 49 |
|
141 |
| -- `helpstring` |
| 50 | +- **x** |
142 | 51 |
|
143 |
| - Specifies a character string that's used to describe the element to which it applies. It's set by default to "method *Method name*." For more information, see [helpstring](/windows/win32/Midl/helpstring) in the *MIDL Reference*. |
| 52 | + Remove the selected parameter from the **Parameters** list. |
144 | 53 |
|
145 |
| - Not available for MFC dispinterfaces. |
| 54 | +- **Pencil icon** |
146 | 55 |
|
147 |
| -- **Additional attributes** |
| 56 | + Edit the selected parameter. |
148 | 57 |
|
149 |
| - Not available for MFC dispinterfaces. |
| 58 | +## See also |
150 | 59 |
|
151 |
| - |Attribute|Description| |
152 |
| - |---------------|-----------------| |
153 |
| - |`hidden`|Indicates that the method exists but shouldn't be displayed in a user-oriented browser. For more information, see [hidden](/windows/win32/Midl/hidden) in the *MIDL Reference*.| |
154 |
| - |`source`|Indicates that a member of the method is a source of events. For more information, see [source](/windows/win32/Midl/source) in the *MIDL Reference*.| |
155 |
| - |`local`|Specifies to the MIDL compiler that the method isn't remote. For more information, see [local](/windows/win32/Midl/local) in the *MIDL Reference*.| |
156 |
| - |`restricted`|Specifies that the method can't be called arbitrarily. For more information, see [restricted](/windows/win32/Midl/restricted) in the *MIDL Reference*.| |
157 |
| - |`vararg`|Specifies that the method takes a variable number of arguments. To accomplish this, the last argument must be a safe array of `VARIANT` type that contains the rest of the arguments. For more information, see [vararg](/windows/win32/Midl/vararg) in the *MIDL Reference*.| |
| 60 | +[Adding functionality with code wizards](adding-functionality-with-code-wizards-cpp.md) |
0 commit comments