Getting Field Descriptions from the Properties Window
At the bottom of the Properties window, a description area displays information related to the selected property field. This feature is turned on by default. If you want to hide the description field, right-click the Properties window and click Description. Doing so also removes the check mark next to the Description title in the menu window. You can display the field again by following the same steps to toggle Description back on.
The information in the description field comes from ITypeInfo. Each method, interface, coclass, and so on can have an unlocalized helpstring
attribute in the type library. The Properties window retrieves the string from GetDocumentation.
To specify localized help strings
Add the
helpstringdll
attribute to the library statement in the type library (typelib
).Note
This step is optional if the type library is in an object library (.olb) file.
Specify
helpstringcontext
attributes for the strings. You can also specifyhelpstring
attributes.These attributes are distinct from the
helpfile
andhelpcontext
attributes, which are contained in actual .chm file Help topics.To retrieve the description information to be displayed for the highlighted property name, the Properties window calls GetDocumentation2 for the property that is selected, specifying the desired
lcid
attribute for the output string. Internally, ITypeInfo2 finds the .dll file specified in thehelpstringdll
attribute and callsDLLGetDocumentation
on that .dll file with the specified context andlcid
attribute.The signature and implementation of
DLLGetDocumentation
are:
STDAPI DLLGetDocumentation
(
ITypeLib * /* ptlib */,
ITypeInfo * /* ptinfo */,
LCID /* lcid */,
DWORD dwCtx,
BSTR * pbstrHelpString
);
The DLLGetDocumentation
function must be an export defined in the .def file for the DLL.
Internally, an .olb file is created which is actually a DLL. This DLL contains one resource, the type library (.tlb) file, and one exported function, DLLGetDocumentation
.
In the case of .olb files, the helpstringdll
attribute is optional because it is the same file that contains the .tlb file itself.
To get strings to show up in the Descriptions pane, therefore, the minimum you have to do is specify the helpstring
attribute in the type library. If you want those strings to be localized, you have to specify the helpstringdll
(optional) attribute and the helpstringcontext
(required) attribute and implement DLLGetDocumentation
.
There are no additional interfaces that need to be implemented when getting localized information through idl's helpstringcontext
attribute and DLLGetDocumentation
.
Another way of obtaining the localized name and description of a property is by implementing GetLocalizedPropertyInfo. For more information relating to the implementation of this method, see Properties Window Fields and Interfaces.
See Also
IVsPerPropertyBrowsing
Properties Window Fields and Interfaces
Extending Properties
helpstringdll
helpstring
helpstringcontext
helpcontext
helpfile
lcid