Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Контекстное меню и CppWebBrowser

471
21 января 2005 года
_MC_
178 / / 13.01.2005
Как на CppWebBrowser запретить вывод стандартное контекстное меню, а заменить его своим?
471
24 января 2005 года
_MC_
178 / / 13.01.2005
Цитата:
Originally posted by _MC_
Как на CppWebBrowser запретить вывод стандартное контекстное меню, а заменить его своим?


Никто не знает или такого не возможно сделать? :(

259
24 января 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by _MC_

Никто не знает или такого не возможно сделать? :(


На сколько я знаю cppWebBrowser запускает экз. IE. Копай там.

246
25 января 2005 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by _MC_

Никто не знает или такого не возможно сделать? :(


Я знаю...

Код:
//---------------------------------------------------------------------------

#ifndef MainH
#define MainH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include[list=1]
#include <Menus.hpp>
#include "mshtmhst.h"
#include "SHDocVw_OCX.h"
//---------------------------------------------------------------------------
class TDocHandler :public IDocHostUIHandler
{
  long refcount;
  TCppWebBrowser* wb;
public:

  TDocHandler(TCppWebBrowser* _wb){
    wb = _wb;
    refcount = 1;
  }

  virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID classid, void** intf) {
    if (classid == IID_IUnknown)
      *intf = (IUnknown*)this;
    else if (classid == IID_IDocHostUIHandler)
      *intf = (IDocHostUIHandler*)this;
    else
      return E_NOINTERFACE;
    return S_OK;
  }

  virtual ULONG STDMETHODCALLTYPE AddRef() {
    InterlockedIncrement(&refcount);
    return refcount;
  }

  virtual ULONG STDMETHODCALLTYPE Release() {
    InterlockedDecrement(&refcount);
    if (refcount == 0)
      delete this;
    return refcount;
  }

  // Чтобы отключить контекстное меню надо вернуть S_OK
  virtual HRESULT STDMETHODCALLTYPE ShowContextMenu(
    /* [in] */ DWORD dwID,
    /* [in] */ POINT __RPC_FAR *ppt,
    /* [in] */ IUnknown __RPC_FAR *pcmdtReserved,
    /* [in] */ IDispatch __RPC_FAR *pdispReserved) {
        //эта ссссссука(TCppWebBrowser) не хотела отображать контекстное меню из
        //св-ва PopupMenu, пришлось сделать так:
        wb->PopupMenu->Popup(ppt->x, ppt->y);

        return S_OK;
    }

  virtual HRESULT STDMETHODCALLTYPE GetHostInfo(
    /* [out][in] */ DOCHOSTUIINFO __RPC_FAR *pInfo) {
        return E_NOTIMPL;
    }

  virtual HRESULT STDMETHODCALLTYPE ShowUI(
    /* [in] */ DWORD dwID,
    /* [in] */ IOleInPlaceActiveObject __RPC_FAR *pActiveObject,
    /* [in] */ IOleCommandTarget __RPC_FAR *pCommandTarget,
    /* [in] */ IOleInPlaceFrame __RPC_FAR *pFrame,
    /* [in] */ IOleInPlaceUIWindow __RPC_FAR *pDoc) {
        return E_NOTIMPL;
    }

  virtual HRESULT STDMETHODCALLTYPE HideUI( void) {
        return E_NOTIMPL;
    }

  virtual HRESULT STDMETHODCALLTYPE UpdateUI( void) {
        return E_NOTIMPL;
    }

  virtual HRESULT STDMETHODCALLTYPE EnableModeless(
    /* [in] */ BOOL fEnable) {
        return E_NOTIMPL;
    }

  virtual HRESULT STDMETHODCALLTYPE OnDocWindowActivate(
    /* [in] */ BOOL fActivate) {
        return E_NOTIMPL;
    }

  virtual HRESULT STDMETHODCALLTYPE OnFrameWindowActivate(
    /* [in] */ BOOL fActivate) {
        return E_NOTIMPL;
    }

  virtual HRESULT STDMETHODCALLTYPE ResizeBorder(
    /* [in] */ LPCRECT prcBorder,
    /* [in] */ IOleInPlaceUIWindow __RPC_FAR *pUIWindow,
    /* [in] */ BOOL fRameWindow) {
        return E_NOTIMPL;
    }

  virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(
    /* [in] */ LPMSG lpMsg,
    /* [in] */ const GUID __RPC_FAR *pguidCmdGroup,
    /* [in] */ DWORD nCmdID) {
        return E_NOTIMPL;
    }

  virtual HRESULT STDMETHODCALLTYPE GetOptionKeyPath(
    /* [out] */ LPOLESTR __RPC_FAR *pchKey,
    /* [in] */ DWORD dw) {
        return E_NOTIMPL;
    }

  virtual HRESULT STDMETHODCALLTYPE GetDropTarget(
    /* [in] */ IDropTarget __RPC_FAR *pDropTarget,
    /* [out] */ IDropTarget __RPC_FAR *__RPC_FAR *ppDropTarget) {
        return E_NOTIMPL;
    }

  virtual HRESULT STDMETHODCALLTYPE GetExternal(
    /* [out] */ IDispatch __RPC_FAR *__RPC_FAR *ppDispatch) {
        return E_NOTIMPL;
    }

  virtual HRESULT STDMETHODCALLTYPE TranslateUrl(
    /* [in] */ DWORD dwTranslate,
    /* [in] */ OLECHAR __RPC_FAR *pchURLIn,
    /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *ppchURLOut) {
        return E_NOTIMPL;
    }

  virtual HRESULT STDMETHODCALLTYPE FilterDataObject(
    /* [in] */ IDataObject __RPC_FAR *pDO,
    /* [out] */ IDataObject __RPC_FAR *__RPC_FAR *ppDORet) {
        return E_NOTIMPL;
    }
};
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
    TCppWebBrowser *CppWebBrowser1;
    TPopupMenu *PopupMenu1;
    TMenuItem *e1;
    TMenuItem *w1;
    TMenuItem *N1;
private:    // User declarations
    TDocHandler* dochandler;
public:     // User declarations
    __fastcall TForm1(TComponent* Owner);
    __fastcall ~TForm1();
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
#include <vcl.h>
#pragma hdrstop

#include "Main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "SHDocVw_OCX"
#pragma link "SHDocVw_OCX"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    dochandler = new TDocHandler(CppWebBrowser1);
    CppWebBrowser1->Navigate(WideString("http://forum.codenet.ru/showthread.php?s=&threadid=21033"));
    while(CppWebBrowser1->Busy)
      Application->ProcessMessages();
    //установить ...
    ICustomDoc *custdoc;
    CppWebBrowser1->Document->QueryInterface(IID_ICustomDoc, (LPVOID*)&custdoc);
    if (custdoc)
      custdoc->SetUIHandler(dochandler);
}
//---------------------------------------------------------------------------
__fastcall TForm1::~TForm1() {
  dochandler->Release();
}
//---------------------------------------------------------------------------
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог