mirror of
https://github.com/rn10950/RetroZilla.git
synced 2024-11-10 18:00:15 +01:00
173 lines
5.0 KiB
C++
173 lines
5.0 KiB
C++
// CBrowserCtlSite.cpp : Implementation of CBrowserCtlSite
|
|
#include "stdafx.h"
|
|
#include "Cbrowse.h"
|
|
#include "CBrowserCtlSite.h"
|
|
|
|
#include <tchar.h>
|
|
#include <string.h>
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CBrowserCtlSite
|
|
|
|
CBrowserCtlSite::CBrowserCtlSite()
|
|
{
|
|
m_bUseCustomPopupMenu = TRUE;
|
|
m_bUseCustomDropTarget = FALSE;
|
|
}
|
|
|
|
static void _InsertMenuItem(HMENU hmenu, int nPos, int nID, const TCHAR *szItemText)
|
|
{
|
|
MENUITEMINFO mii;
|
|
memset(&mii, 0, sizeof(mii));
|
|
mii.cbSize = sizeof(mii);
|
|
mii.fMask = MIIM_TYPE;
|
|
mii.fType = MFT_STRING;
|
|
mii.fState = MFS_ENABLED;
|
|
mii.dwTypeData = (LPTSTR) szItemText;
|
|
mii.cch = _tcslen(szItemText);
|
|
InsertMenuItem(hmenu, nPos, TRUE, &mii);
|
|
}
|
|
|
|
static void _InsertMenuSeparator(HMENU hmenu, int nPos)
|
|
{
|
|
MENUITEMINFO mii;
|
|
memset(&mii, 0, sizeof(mii));
|
|
mii.cbSize = sizeof(mii);
|
|
mii.fMask = MIIM_TYPE;
|
|
mii.fType = MFT_SEPARATOR;
|
|
mii.fState = MFS_ENABLED;
|
|
InsertMenuItem(hmenu, nPos, TRUE, &mii);
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// IDocHostUIHandler
|
|
|
|
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::ShowContextMenu(/* [in] */ DWORD dwID, /* [in] */ POINT __RPC_FAR *ppt, /* [in] */ IUnknown __RPC_FAR *pcmdtReserved, /* [in] */ IDispatch __RPC_FAR *pdispReserved)
|
|
{
|
|
if (m_bUseCustomPopupMenu)
|
|
{
|
|
tstring szMenuText(_T("Unknown context"));
|
|
HMENU hmenu = CreatePopupMenu();
|
|
_InsertMenuItem(hmenu, 0, 1, _T("CBrowse context popup"));
|
|
_InsertMenuSeparator(hmenu, 1);
|
|
switch (dwID)
|
|
{
|
|
case CONTEXT_MENU_DEFAULT:
|
|
szMenuText = _T("Default context");
|
|
break;
|
|
case CONTEXT_MENU_IMAGE:
|
|
szMenuText = _T("Image context");
|
|
break;
|
|
case CONTEXT_MENU_CONTROL:
|
|
szMenuText = _T("Control context");
|
|
break;
|
|
case CONTEXT_MENU_TABLE:
|
|
szMenuText = _T("Table context");
|
|
break;
|
|
case CONTEXT_MENU_TEXTSELECT:
|
|
szMenuText = _T("TextSelect context");
|
|
break;
|
|
case CONTEXT_MENU_ANCHOR:
|
|
szMenuText = _T("Anchor context");
|
|
break;
|
|
case CONTEXT_MENU_UNKNOWN:
|
|
szMenuText = _T("Unknown context");
|
|
break;
|
|
}
|
|
|
|
_InsertMenuItem(hmenu, 2, 2, szMenuText.c_str());
|
|
|
|
POINT pt;
|
|
GetCursorPos(&pt);
|
|
TrackPopupMenu(hmenu, TPM_RETURNCMD, pt.x, pt.y, 0, AfxGetMainWnd()->GetSafeHwnd(), NULL);
|
|
DestroyMenu(hmenu);
|
|
return S_OK;
|
|
}
|
|
return S_FALSE;
|
|
}
|
|
|
|
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::GetHostInfo(/* [out][in] */ DOCHOSTUIINFO __RPC_FAR *pInfo)
|
|
{
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::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;
|
|
}
|
|
|
|
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::HideUI(void)
|
|
{
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::UpdateUI(void)
|
|
{
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::EnableModeless(/* [in] */ BOOL fEnable)
|
|
{
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::OnDocWindowActivate(/* [in] */ BOOL fActivate)
|
|
{
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::OnFrameWindowActivate(/* [in] */ BOOL fActivate)
|
|
{
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::ResizeBorder(/* [in] */ LPCRECT prcBorder, /* [in] */ IOleInPlaceUIWindow __RPC_FAR *pUIWindow, /* [in] */ BOOL fRameWindow)
|
|
{
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::TranslateAccelerator(/* [in] */ LPMSG lpMsg, /* [in] */ const GUID __RPC_FAR *pguidCmdGroup, /* [in] */ DWORD nCmdID)
|
|
{
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::GetOptionKeyPath(/* [out] */ LPOLESTR __RPC_FAR *pchKey, /* [in] */ DWORD dw)
|
|
{
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::GetDropTarget(/* [in] */ IDropTarget __RPC_FAR *pDropTarget, /* [out] */ IDropTarget __RPC_FAR *__RPC_FAR *ppDropTarget)
|
|
{
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::GetExternal(/* [out] */ IDispatch __RPC_FAR *__RPC_FAR *ppDispatch)
|
|
{
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::TranslateUrl(/* [in] */ DWORD dwTranslate, /* [in] */ OLECHAR __RPC_FAR *pchURLIn, /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *ppchURLOut)
|
|
{
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::FilterDataObject(/* [in] */ IDataObject __RPC_FAR *pDO, /* [out] */ IDataObject __RPC_FAR *__RPC_FAR *ppDORet)
|
|
{
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// IDocHostShowUI
|
|
|
|
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::ShowMessage(/* [in] */ HWND hwnd, /* [in] */ LPOLESTR lpstrText, /* [in] */ LPOLESTR lpstrCaption, /* [in] */ DWORD dwType, /* [in] */ LPOLESTR lpstrHelpFile, /* [in] */ DWORD dwHelpContext,/* [out] */ LRESULT __RPC_FAR *plResult)
|
|
{
|
|
return S_FALSE;
|
|
}
|
|
|
|
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::ShowHelp(/* [in] */ HWND hwnd, /* [in] */ LPOLESTR pszHelpFile, /* [in] */ UINT uCommand, /* [in] */ DWORD dwData, /* [in] */ POINT ptMouse, /* [out] */ IDispatch __RPC_FAR *pDispatchObjectHit)
|
|
{
|
|
return S_FALSE;
|
|
}
|
|
|