描述:
我写了一个ocx控件,但是把它放到Htm里后,复制粘贴,方向键都不管用了。
解决方案1:
在Activex测试容器里面肯定没有问题,不过在ie里面,键盘的控制必须自己处理
改动三个方法
int CActivexCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1;
OnActivateInPlace (TRUE, NULL); // == UI-Activate the control
if(!m_pPanesOwner->Create(NULL,NULL,WS_CHILD|WS_VISIBLE,CRect(0,0,0,0),this,12345)){
return -1;
}
return 0;
}
int CActivexCtrl::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message)
{
if (!m_bUIActive)
OnActivateInPlace (TRUE, NULL); // == UI-Activate the control
return COleControl::OnMouseActivate(pDesktopWnd, nHitTest, message);
}
BOOL CActivexCtrl::PreTranslateMessage(MSG* pMsg)
{
switch (pMsg->message)
{
case WM_KEYDOWN:
case WM_KEYUP:
switch (pMsg->wParam)
{
case VK_UP:
case VK_DOWN:
case VK_LEFT:
case VK_RIGHT:
case VK_HOME:
case VK_END:
case VK_TAB:
::SendMessage(pMsg->hwnd,pMsg->message, pMsg->wParam, pMsg->lParam);
return TRUE;
}
break;
}
return COleControl::PreTranslateMessage(pMsg);
}
in MSDN KB:
PRB: TranslateAccelerator() Not Called for ActiveX Controls
ID: Q183167
PRB: MFC ActiveX Control Ignores ARROW Keys on VB Container
ID: Q180402
PRB: TAB Behavior When Using MFC Subclassed Control on VB Form
ID: Q214476
PRB: KeyPress Problem When Using MFC Control on MDI Child Form
ID: Q197504
PRB: MFC ActiveX Control in IE Doesn't Detect Keystrokes
ID: Q168777