Click here to Skip to main content
15,886,518 members
Articles / Desktop Programming / MFC
Article

Find in CWebBrowser Control

Rate me:
Please Sign up or sign in to vote.
5.00/5 (1 vote)
10 Aug 2000 158K   24   30
How to display the "Find" window in a CWebBrowser control.

Introduction

An application that I had been assigned to write, required me to display reports that could possibly be over 10,000 lines in a CWebBrowser control. These 10,000 lines sometimes took a matter of hours to produce, so it was decided that it would be nice to display the report as it was generated, line by line. Being reasonably new to COM, I posted the question "How?" in the CodeProject message area. Along came Colin Davies, with a bit a code. In a 10,000 line report, it can take the user a lllloooonnnngggg time to find what they are looking for!

IE5 has the Edit - Find (on this page)... CTRL+F option that searches the current page. So I investigated implementing this in my CWebBrowser control, and found it was not as easy as it had first sounded to a COM newbie. Anyway after searching some rather confusing MSDN articles I hacked some code to produce this code slice, which can also be modified to display the View Source and Options windows as well.

Source listing

#include <initguid.h>
DEFINE_GUID(CGID_IWebBrowser,0xED016940L,
            0xBD5B,0x11cf,0xBA, 0x4E,0x00,
            0xC0,0x4F,0xD7,0x08,0x16);

//1 : FIND, 2: VIEWSOURCE, 3 : OPTIONS
DWORD nCmdID = 1; 

LPDISPATCH lpDispatch = NULL;
LPOLECOMMANDTARGET lpOleCommandTarget = NULL;

//m_htmlview is the member variable 
//for the CWebBrowser2 control.

lpDispatch = m_htmlview.GetDocument();
ASSERT(lpDispatch);

// Get an IDispatch pointer for the 
// IOleCommandTarget interface.
lpDispatch->QueryInterface(
        IID_IOleCommandTarget,
        (void**)&lpOleCommandTarget);
ASSERT(lpOleCommandTarget);

lpDispatch->Release();

// Invoke the given command id for 
// the WebBrowser control
lpOleCommandTarget->Exec(
        &CGID_IWebBrowser, nCmdID, 0,
        NULL, NULL);

// Release the command target
lpOleCommandTarget->Release();

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Instructor / Trainer
United Kingdom United Kingdom
Is was a hardware engineer that wrote the odd bit of MFC software. A redundancy and career change later, I now teach 11-19 year olds Mechanical Engineering and Computer Science.
This is a Organisation (No members)


Comments and Discussions

 
GeneralPrinting Pin
Brian Hart26-Jul-00 6:48
Brian Hart26-Jul-00 6:48 
GeneralRe: Printing Pin
Peter Ierardi18-Aug-00 4:32
sussPeter Ierardi18-Aug-00 4:32 
GeneralRe: Printing problem any ideas? Pin
Steve29-Aug-00 2:41
Steve29-Aug-00 2:41 
GeneralRe: Printing problem any ideas? Pin
Jeremy Davis3-Sep-00 22:24
Jeremy Davis3-Sep-00 22:24 
GeneralRe: Printing problem any ideas? Pin
Jeremy Davis3-Sep-00 22:25
Jeremy Davis3-Sep-00 22:25 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.