Parameter Info Tooltips
The IntelliSense Parameter Info tooltip provides users with hints about where they are in a language construct.
How Parameter Info Tooltips Work
When you type a statement in the editor, the VSPackage displays a small tooltip window containing the definition of the statement being typed. For example, if you type a Microsoft Foundation Classes (MFC) statement (such as pMainFrame ->UpdateWindow) and press the opening parenthesis key to begin listing parameters, a method tip appears displaying the definition of the UpdateWindow method.
Parameter Info tooltips are usually used in conjunction with statement completion. They are most useful for languages that have parameters or other formatted information after the method name or keyword.
The Parameter Info tooltips are initiated by the language service through command interception. To intercept user characters, your language service object must implement the IOleCommandTarget interface and pass the text view a pointer to your IOleCommandTarget implementation, by calling the AddCommandFilter method in the IVsTextView interface. The command filter intercepts commands that you type into the code window. Monitor the command information to know when to display parameter information to the user. You can use the same command filter for statement completion, error markers, and so forth.
When you type a keyword for which the language service can provide hints, then the language service creates an IVsMethodTipWindow object and calls the UpdateTipWindow method in the IVsTextView interface to notify the IDE to display a hint. Create the IVsMethodTipWindow object using VSLocalCreateInstance and specifying the coclass CLSID_VsMethodTipWindow. VsLocalCreateInstance is a function defined in the header file vsdoc.h that calls QueryService for the local registry and calls CreateInstance on this object for the CLSID_VsMethodTipWindow.
Providing a Method Tip
To provide a method tip, call the SetMethodData method in the IVsMethodTipWindow interface, passing it your implementation of the IVsMethodData interface.
When your IVsMethodData class is invoked, its methods are called in the following order:
-
Returns the position and length of the relevant data in the current text buffer. This instructs the IDE to not obscure that data with the tooltip window.
-
Returns the method number (zero-based index) you want to be displayed initially. For example, if you return zero, then the first overloaded method is initially presented.
-
Returns the number of overloaded methods that are applicable in the current context. If you return a value greater than 1 for this method, then the text view displays up and down arrows for you. If you click the down arrow, the IDE calls the NextMethod method. If you click the up arrow, the IDE calls the PrevMethod method.
-
The text of the Parameter Info tooltip is constructed during several calls to the GetMethodText and GetParameterText methods.
-
Returns the number of parameters to display in the method.
-
If you return a method number corresponding with the overload you want displayed, this method is called, followed by a call to the UpdateView method.
-
Informs your language service to update the editor when a method tip is displayed. In the UpdateView method, call the following:
<pTxWin> ->UpdateTipWindow(<pTip>, UTW_CONTENTCHANGED | UTW_CONTEXTCHANGED).
-
You receive a call to the OnDismiss method when you close the method tip window.