WebBand Hosts WebBrowser Control in an Explorer Band
ID: Q196339
|
The information in this article applies to:
-
Microsoft Internet Explorer (Programming) versions 4.0, 4.01, 4.01 SP1, 5.0, 5.0dp1
SUMMARY
WebBand is a Explorer band sample that demonstrates how to host the
WebBrowser control in an Explorer Band. (For more information about
Explorer bands, please see the REFERENCES section in this article.)
WebBand demonstrates how to deal with a lot of the complicated issues of
hosting the WebBrowser control in an Explorer band, such as keystroke and
navigation problems.
MORE INFORMATION
The following file is available for download from the Microsoft Software
Library:
~ WebBand.exe
Release Date: Aug-29-1998
For more information about downloading files from the Microsoft Software
Library, please see the following article in the Microsoft Knowledge Base:
Q119591 How to Obtain Microsoft Support Files from Online Services
WebBand is a band object sample that demonstrates how to host the
WebBrowser control in an Vertical/Explorer band. This sample is very
similar to the Search band that comes with Internet Explorer 4.0 and later.
To use WebBand, follow these steps.
- Copy the WebBand.htm and Results.htm files to a location on your Web
server that corresponds to the STARTUP_URL definition in the
WBExplorerBar.cpp file. STARTUP_URL is defined as
"http://localhost/webband.htm", which assumes that the files are
located on the default directory of a Web server that is running on
the same machine as the Web browser. You must change STARTUP_URL to
reference a specific Web server if you want this sample to work
on other computers within your network or if your Web server is not
located on the same computer where you are running this sample.
- Compile the sample code using Visual C++ 5.0 or 6.0 (see the notes
below for information about compiling with Visual C++ 5.0).
- After compiling and registering WebBand.dll, start Internet Explorer 4.0
or above and choose WebBand Search from the View menu. If you are using
Internet Explorer 4.0x, this will be located under the Explorer submenu
of the View menu.
WebBand will load WebBand.htm, which contains a form with an edit box and
Submit button and a couple of links to other Web pages. When you type in
the edit box and click the Submit button, the Results.htm file will be
loaded in the current window. If you click on one of the links on the
WebBand.htm Web page, the URL will be loaded in the main Internet Explorer
window.
If you are running Internet Explorer 5.0 or higher then a button is added to Internet Explorer's toolbar that displays the WebBand when pressed. Adding buttons to the toolbar is not supported in Internet Explorer 4.
WebBand is able to get around the keystroke issues that are most commonly
associated with hosting the WebBrowser control in an Explorer band. These
keystroke issues often cause problems with the backspace and delete keys
when focus is set to an edit box by clicking on it with the left mouse
button. These problems are caused by focus problems. The problem is usually
that Internet Explorer does not know that the band currently has the focus.
In order to alleviate these problems, WebBand implements IOleControlSite.
In the IOleControlSite::OnFocus method, the WebBrowser's
IInputObjectSite::OnFocusChangesIS must be called to tell the WebBrowser
that WebBand now has the focus.
Whenever a key is pressed, three things occur:
- WebBand's IInputObject::HasFocusIO method is called to see if WebBand
currently has the focus.
- The IInputObject::UIActivateIO method is called to tell WebBand
that is being activated.
- The IInputObject::TranslateAccelerator method is called. It is here
that WebBand passes the keystroke to the hosted WebBrowser control.
This causes accelerator keys such as backspace and delete to be
processed.
Another feature of WebBand is that navigation will occur in the correct
window. This is accomplished in a number of ways. When a page is loaded,
WebBand sinks events for all anchors on the page through the "all"
collection. When an anchor is clicked, the target of the navigation is
changed from the band window to the main Internet Explorer window.
Using Internet Explorer 4.0, you are only able to navigate to WebBand.htm
and Results.htm. The Back link on the search results page, has a fragment
identifier (that is, bookmark) associated with it. This fragment identifier
is currently named "#_mysearch." In the BeforeNavigate2 event handler,
WebBand checks for this fragment identifier in the URL. If it exists in the
URL, the target of the navigation is changed to the band window.
NOTE: This sample was created using Visual C++ 6.0. It will compile in
Visual C++ 5.0 but you will see some compiler warnings due to new Visual
C++ 6.0 compiler directives.
REFERENCES
Explorer Bars/Band Objects in the MSDN Online Web Builder Workshop:
http://msdn.microsoft.com/workshop/browser/ext/overview/bands.asp
BandObjs sample in the Internet Client SDK:
http://msdn.microsoft.com/library/devprods/vs6/vc++/vcsample/vcsmpbandobjs.htm
Reusing the WebBrowser control:
http://msdn.microsoft.com/workshop/browser/webbrowser/webbrowser.asp
(c) Microsoft Corporation 1998, All Rights Reserved. Contributions by Scott
Roberts, Microsoft Corporation.
Additional query words:
Keywords : kbfile kbsample kbIE400 kbIE401 kbIE401sp1 kbIE500dp1 kbIE500
Version : WINDOWS:4.0,4.01,4.01 SP1,5.0,5.0dp1
Platform : WINDOWS
Issue type : kbhowto
Last Reviewed: May 10, 1999