I want to use Delete key (in IWebBrowser)
I want to use Delete key (in IWebBrowser)
Hi.
I'm making an Explorer Bar(by ATL/IDeskBand).
CEBar is main class.
m_ax is a class implemented CAxWindow.
CIEWebBrowser is a composite control.
m_web is a IWebBrowser Control.
m_ax is CEBar's member class variable.
m_web is CIEWebBrowser's member control variable.
When IExplorer run, CEBar is called.
CEBar has a m_hWnd.
m_hWnd is created by next code.
WNDCLASS cls;
if(!::GetClassInfo(_Module.m_hInst, m_szClassName, &cls))
{
cls.hCursor = LoadCursor(NULL, IDC_ARROW);
cls.hIcon = NULL;
cls.lpszMenuName = NULL;
cls.lpszClassName = m_szClassName;
cls.hbrBackground = NULL;
cls.hInstance = _Module.GetModuleInstance();
cls.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
cls.lpfnWndProc = ::GWndProc;
cls.cbClsExtra = 4;
cls.cbWndExtra = 4;
if (!RegisterClass(&cls))
return FALSE;
}
And then, CEBar create m_ax.
And then, m_ax create CIEWebBrowser (by QueryControl(IID_IIEBrowser,
(LPVOID*)&m_pSHBrowser))
And then, IWebBrowser of CIEWebBrowser load a page(like www.yahoo.com).
And I use several keys next code.
LRESULT CEBar::WndProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if (!m_hWnd) return 0L;
switch (message)
{
case SHM_FOCUSCHANGE:
if (m_pSite)
{
IUnknown* pUnk = NULL;
if (SUCCEEDED(QueryInterface(IID_IUnknown, (LPVOID*)&pUnk)) && pUnk
!= NULL)
{
m_pSite->OnFocusChangeIS(pUnk, (BOOL)wParam);
pUnk->Release();
pUnk = NULL;
}
}
return 0L;
case WM_SETFOCUS:
OnFocus(true);
return 0;
case WM_KILLFOCUS:
OnFocus(false);
return 0;
case WM_PARENTNOTIFY:
OnFocus(true);
return 0;
}
return DefWindowProc(m_hWnd, message, wParam, lParam);
}
STDMETHODIMP CEBar::TranslateAcceleratorIO(LPMSG lpMsg)
{
// the only window that needs to translate messages is our edit box so
forward them.
TranslateMessage(lpMsg);
DispatchMessage(lpMsg);
return S_OK;
}
STDMETHODIMP CEBar::UIActivateIO(BOOL fActivate, LPMSG lpMsg)
{
// if our deskband is being activated then set focus to the edit box.
if (fActivate && m_hWnd)
SetFocus(m_hWnd);
if(m_pSite)
{
if (m_pSite)
m_pSite->OnFocusChangeIS((IInputObject*)this, true);
}
return S_OK;
}
STDMETHODIMP CEBar::OnFocus(BOOL fGotFocus)
{
if (m_pSite)
m_pSite->OnFocusChangeIS((IInputObject*)this, fGotFocus);
return S_OK;
}
Now, I have two problem.
1. Delete key doesn't work (backspace is work)
2. When I click a text box in IWebBrowser first time, the text box
doesn't have focus.
(but first time after, it has focus)
Isn't my code good?