Re: CHtmlView - disabling keyboard control functions
"JWF" <james.feller@no.spam.emageon.com> wrote in message
news:31389F11-F4A0-4099-AB6B-5AE41249888B@microsoft.com...
Hello all,
I am using the CHtmlView to host a web application within my MFC
application. I wish to disable all navigation (via the keyboard and
context
menu) functionality. I want all navigation to be handled only by the web
application. I don't want the user to be able to hit he backspace key,
alt-left arrow, etc... to navigate back and forward. The web application
that
is being hosted does not handle this well.
I have disabled the context menu easily enough by overriding the virtual
method OnShowContextMenu.
However, I have not been able to figure out a way to disable navigation.
Any help would be appreciated.
I'll share what I did in my CDhtmlDialog app:
HRESULT CDHtmlPopupDlg::TranslateAccelerator(LPMSG lpMsg, const GUID
*pguidCmdGroup, DWORD nCmdID)
{
// F5 key refreshes browser contents to initial HTML contents and does not
cause OnDocumentComplete()
// to be fired... therefore the translated text does not re-appear! Block
F5 key from taking effect.
if ( (lpMsg->message == WM_KEYDOWN) && (lpMsg->wParam == VK_F5) )
return S_OK;
return CDHtmlDialog::TranslateAccelerator(lpMsg, pguidCmdGroup, nCmdID);
}
BOOL CDHtmlPopupDlg::OnInitDialog()
{
CDHtmlDialog::OnInitDialog();
...
// Disable features of the web browser that are inappropriate when embedded
into our application
// Embedded HTML will not allow text to be selected
// Will use XP themes
// No scrollbars
// Links opened in external window
DOCHOSTUIINFO info;
info.cbSize = sizeof(info);
GetHostInfo (&info);
SetHostFlags (info.dwFlags | DOCHOSTUIFLAG_DIALOG | DOCHOSTUIFLAG_THEME |
DOCHOSTUIFLAG_SCROLL_NO); // DOCHOSTUIFLAG_OPENNEWWIN - caused error
windows to open in Win2K/IE5; // DOCHOSTUIFLAG_DIALOG !!!! must enable
selection so OnHtmlDragStart() is called!
// Don't allow user to drop shortcut onto this window and have the browser
navigate to show that web site
m_pBrowserApp->put_RegisterAsDropTarget(VARIANT_FALSE);
}
-- David