Click here to Skip to main content
15,889,216 members
Articles / Desktop Programming / MFC
Article

Customize Web Browser ActiveX and change its inbuilt settings

Rate me:
Please Sign up or sign in to vote.
3.73/5 (8 votes)
19 Sep 20042 min read 129.3K   2.5K   20   35
This article demonstrates how to change Web Browser ActiveX inbuilt settings. In this article, two major tasks are implemented: hide default scroll and disable right click.

Sample application screen

Introduction:

Internet Explorer is a very powerful tool for showing all types of images (JPEG/GIF etc.) and web files (HTML, ASP etc.). This is the tool that can be used as multipurpose picture/document viewer. That's what I tried to use. But that was not the end. That was starting of my problem.

Problem:

Web Browser ActiveX has some problems when it displays Picture/Document.

  1. It shows vertical scroll bar in right side even if there is no need of that.
  2. It allows user to right click and choose Options as in Internet Explorer.

Solution:

It was very hard to find a solution to this problem, as that solution was hidden. Four main files were added in this project to solve this problem.

  1. custsite.h & custsite.cpp
  2. idispimp.h & idispimp.cpp

These files are interfaces to reach into the Web Browser Control. These classes can control the internals of Web Browser such as scroll, right click etc.

How to use (link) these classes:

Step I: Open header file of your application class. E.g.: in my sample project, it is InternetExplorerExperimentApp.h. Add the following code in the class:

class CImpIDispatch* m_pDispOM;

Step II: Open CPP file of your application class. E.g.: InternetExplorerExperimentApp.Cpp. Add the following code:

  • Add header files:
    #include <..\src\occimpl.h>
    #include "custsite.h"
  • Add code in function InitInstance() just in starting of function:
    CCustomOccManager *pMgr = new CCustomOccManager;
    // Create an IDispatch class for extending the Dynamic HTML Object Model
    m_pDispOM = new CImpIDispatch;
    AfxEnableControlContainer(pMgr);

Step III: Open Custsite.cpp and add global variable as declared in application's .cpp file, with extern.

extern CInternetExplorerExperimentApp theApp;

Step IV: Add main project header file in both files:

  1. custsite.h
  2. idispimp.h

What I did to hide scroll bar:

// * CImpIDocHostUIHandler::GetHostInfo
// *
// * Purpose: Called at initialization
// *
HRESULT FAR EXPORT 
  CCustomControlSite::XDocHostUIHandler::GetHostInfo( DOCHOSTUIINFO* pInfo )
{

    METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
    // Just Comment following lines & you'll see scroll bar.
    pInfo->dwFlags = DOCHOSTUIFLAG_NO3DBORDER;
    pInfo->dwDoubleClick = DOCHOSTUIDBLCLK_DEFAULT;
    pInfo->dwFlags|=DOCHOSTUIFLAG_SCROLL_NO;
    return S_OK;
}

That's the end. Now, you have a direction, and if you find anything new, please let me know also. See you soon with another magic.

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
Software Developer (Senior)
India India
Working in Patni Computer Systems, Noida(INDIA). I like to work in C/C++ even from my school time & mostly worked using C++, VC++, COM.

I want to give something bigger than biggest to IT field. Try is going on.

I like to make friends.
That’s all about me.

Ok! See you.
Have a nice Life.

Comments and Discussions

 
QuestionZoom out window Pin
cbir systems13-May-08 20:56
cbir systems13-May-08 20:56 
QuestionAlternative way Pin
fate9319-Mar-08 16:09
fate9319-Mar-08 16:09 
Generalcompiling errors ! Pin
Don Box22-Jun-06 6:05
Don Box22-Jun-06 6:05 
GeneralRe: compiling errors ! Pin
prezess14-Oct-06 14:18
prezess14-Oct-06 14:18 
QuestionPrevent Web Pages from Being Saved in Cache Pin
razvar15-Nov-05 22:37
razvar15-Nov-05 22:37 
QuestionHow can I create a WebBrowser Contrl with C Pin
ftts27-Sep-05 14:03
ftts27-Sep-05 14:03 
AnswerRe: How can I create a WebBrowser Contrl with C Pin
Sumit Kapoor27-Sep-05 14:05
Sumit Kapoor27-Sep-05 14:05 
Generalwith WCE 420 Pin
IFranco26-Jul-05 15:25
IFranco26-Jul-05 15:25 
GeneralRe: with WCE 420 Pin
Sumit Kapoor26-Jul-05 23:18
Sumit Kapoor26-Jul-05 23:18 
GeneralProblem with borders around images Pin
Virendra Sharma2-Jun-05 5:41
Virendra Sharma2-Jun-05 5:41 
GeneralRe: Problem with borders around images Pin
Alexander Jost25-Jun-05 23:49
Alexander Jost25-Jun-05 23:49 
GeneralUnable to compile Pin
vyjesh21-Jan-05 19:59
vyjesh21-Jan-05 19:59 
GeneralRe: Unable to compile Pin
Sumit Kapoor23-Jan-05 19:05
Sumit Kapoor23-Jan-05 19:05 
GeneralRe: Unable to compile Pin
Paul the Great24-Oct-06 5:38
Paul the Great24-Oct-06 5:38 
GeneralRe: Unable to compile Pin
Darko@Hot7-Jul-08 6:23
Darko@Hot7-Jul-08 6:23 
GeneralWant IE And IpHelper Help Pin
eiteit23-Nov-04 4:58
eiteit23-Nov-04 4:58 
GeneralRe: Want IE And IpHelper Help Pin
Sumit Kapoor23-Nov-04 17:15
Sumit Kapoor23-Nov-04 17:15 
GeneralRe: Want IE And IpHelper Help Pin
eiteit23-Nov-04 21:00
eiteit23-Nov-04 21:00 
GeneralRe: Want IE And IpHelper Help Pin
Sumit Kapoor24-Nov-04 19:27
Sumit Kapoor24-Nov-04 19:27 
Hi Dear,
I don't have much time to develop a Sample for you. But I'm trying to lead you to solution. Rest is your try & Hardwork.;)

Smile | :) #1 HINT:

DISPID_AMBIENT_DLCTL or DISPID_AMBIENT_DLCONTROL -5512
is implemented using following properties.

#define DLCTL_DLIMAGES 0x00000010
#define DLCTL_VIDEOS 0x00000020
#define DLCTL_BGSOUNDS 0x00000040
#define DLCTL_NO_SCRIPTS 0x00000080
#define DLCTL_NO_JAVA 0x00000100
#define DLCTL_NO_RUNACTIVEXCTLS 0x00000200
#define DLCTL_NO_DLACTIVEXCTLS 0x00000400
#define DLCTL_DOWNLOADONLY 0x00000800
#define DLCTL_NO_FRAMEDOWNLOAD 0x00001000
#define DLCTL_RESYNCHRONIZE 0x00002000
#define DLCTL_PRAGMA_NO_CACHE 0x00004000
#define DLCTL_FORCEOFFLINE 0x10000000
#define DLCTL_NO_CLIENTPULL 0x20000000
#define DLCTL_SILENT 0x40000000
#define DLCTL_OFFLINEIFNOTCONNECTED 0x80000000

These all are used to set properties..Use search engin to find more about these proerties.


Smile | :) #2 HINT :

In my code where this code or proerties should be set..
Class ---> CImpIDispatch
function --> Invoke(DISPID dispIdMember,REFIID,LCID,...............

How to set these above proerties that you have to find out.

I hope these hints may help you.
I'll try to spare some time to implement this code, but frankly speaking..it'll too difficult for me to spare time..but for you I'll try...
So please don't wait for my code..Just try yourself.

for your point 2 & 3. I don't have any idea.Frown | :(
Best of luck.
Thanks
Keep smileBlush | :O








Never consider anything impossible before trying to solve that..---Sumit Kapoor--- sumit_kapoor1980@hotmail.com sumit.kapoor@pecint.com
Generaliphlpapi.lib Pin
Sumit Kapoor24-Nov-04 19:38
Sumit Kapoor24-Nov-04 19:38 
GeneralRe: iphlpapi.lib Pin
eiteit26-Nov-04 7:24
eiteit26-Nov-04 7:24 
GeneralRe: iphlpapi.lib Pin
Sumit Kapoor28-Nov-04 20:18
Sumit Kapoor28-Nov-04 20:18 
GeneralNot working somehow Pin
Anonymous18-Oct-04 3:02
Anonymous18-Oct-04 3:02 
GeneralRe: Not working somehow Pin
mmanyen3-Jan-05 9:31
mmanyen3-Jan-05 9:31 
QuestionRe: Not working somehow Pin
cbir systems17-Oct-07 2:43
cbir systems17-Oct-07 2:43 

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.