How to Send Any Arrow Key Related Messages to .OCX FileArticle ID: Q132450Creation Date: 11-JUL-1995 Revision Date: 12-OCT-1995
The information in this article applies to:
SUMMARY
To send any arrow key related messages to your control, you must override
the PreTranslateMessage for your .OCX file.
MORE INFORMATION
You need to override the PreTranslateMessage member function, forward key
presses that you want to trap to the control, and return TRUE. You should
call COleControl::PreTranslateMessage for all keys that you do not
process, and return the value from COleControl::PreTranslateMessage.
The following code shows how to implement PreTranslateMessage in your
XXXXXCTL.CPP file:
BOOL CXxxxCtrl::PreTranslateMessage(LPMSG lpMsg)
{
switch (lpMsg->message)
{
case WM_KEYDOWN:
case WM_KEYUP:
switch (lpMsg->wParam)
{
case VK_UP:
case VK_DOWN:
case VK_LEFT:
case VK_RIGHT:
SendMessage(lpMsg->message,lpMsg->wParam,lpMsg->lParam);
return TRUE;
}
break;
}
return COleControl::PreTranslateMessage(lpMsg);
}
You also need to include the following declaration in your control class declaration in XXXXCTL.H along with the other virual function declarations:
virtual BOOL PreTranslateMessage(LPMSG lpMsg); |
THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.