ID: Q184780
The information in this article applies to:
IEFavMnu demonstrates how to enumerate the Favorites folder and create a Favorites menu. This sample hosts the WebBrowser control in order to facilitate testing of the Favorites menu. Channels and Shell Links are also included in the Favorites menu just as in Internet Explorer 4.0x.
The following file is available for download from the Microsoft Software Library:
~ IEFavMnu.exe (size: 49604 bytes)
For more information about downloading files from the Microsoft Software
Library, please see the following article in the Microsoft Knowledge Base:
ARTICLE-ID: Q119591
TITLE : How to Obtain Microsoft Support Files from Online Services
IEFavMnu enumerates the Favorites folder and adds the name of each item to
the Favorites menu. Also, the Uniform Resource Locator (URL) to which the
favorite points is added to a CStringArray object. When the user chooses a
favorite from the Favorites menu, the CStringArray is used to determine
where to navigate.
IEFavMnu performs the following steps in order to enumerate the Favorites folder and create the Favorites menu:
1. Get a pointer to an identifier list (PIDL) for the Favorites folder by
calling the SHGetSpecialFolderLocation() function.
2. Enumerate all objects in the Favorites folder using the
IShellFolder::EnumObjects() method.
3. Get the display name of the favorite by calling the
IShellFolder::GetDisplayNameOf() method.
4. If the item is a folder, create a new submenu. The function that
creates the Favorites menu then calls itself again in order to enumerate
the subfolder.
If the item is not a folder, it is added to the current menu.
5. Get the actual URL of the favorite. This is different depending on
if the item is an internet shortcut, a channel shortcut, a link, and so
forth.
6. Add the URL of the favorite to a CStringArray that holds the URLs for
all the favorites.
IEFavMnu assigns a range of command IDs to the favorites in the menu.
Currently this range is from 33000 to 35000. This means that if the user
has more than 2000 favorites, attempts to navigate to any favorite after
number 2000 will fail. This range of command IDs maps to the
OnFavoritesURL() method. A range of command IDs is mapped to a method by
using the ON_COMMAND_RANGE() macro in the message map.
When the user chooses a favorite from the menu, the OnFavoritesURL() method is called. Then the IWebBrowser2::Navigate() method is called with the URL of the favorite which is retrieved from the CStringArray. The offset into the CStringArray that contains the URL of the selected favorite is determined by subtracting the ID of the first favorite from the command ID that is sent to the OnFavoritesURL() method.
(c) Microsoft Corporation 1998, All Rights Reserved. Contributions by Scott Roberts, Microsoft Corporation
Additional query words: Favorite ShellLink Channel
Keywords : kbfile kbsample kbIE400 kbIE401 InetSDKActiveDeskt kbIntDev
Version : WINDOWS:4.0,4.01
Platform : WINDOWS
Issue type : kbhowto
Last Reviewed: January 9, 1999