如何使得OCX控件能响应PreTranslateMessage消息?
来源:互联网 发布:网络信息化工程公司 编辑:程序博客网 时间:2024/05/29 19:50
1、首先在OCX的CPP文件中声明一个全局变量:
static HHOOK hHook = NULL;
2、定义VHook处理函数:
LRESULT CALLBACK GetMessageProc(int nCode, WPARAM wParam, LPARAM lParam)
{
// Switch the module state for the correct handle to be used.
AFX_MANAGE_STATE(AfxGetStaticModuleState( ));
// If this is a keystrokes message, translate it in controls'
// PreTranslateMessage().
LPMSG lpMsg = (LPMSG) lParam;
if( (nCode >= 0) && (PM_REMOVE == wParam) &&
AfxGetApp()->PreTranslateMessage(lpMsg))
{
lpMsg->message = WM_NULL;
lpMsg->lParam = 0L;
lpMsg->wParam = 0;
}
// Passes the hook information to the next hook procedure in
// the current hook chain.
return ::CallNextHookEx(hHook, nCode, wParam, lParam);
}
3、在OCX的“OnCreate”中添加如下代码:
// Because ActiveX control is an inproc server, it does not have a
// message pump. So, messages to child windows created by the
// ActiveX control are not going to be received by the control.
// Thus, we set up a message hook to call PreTranslateMessage().
// This results in the call to FilterToolTipMessage(), which
// activates tooltips.
hHook = ::SetWindowsHookEx(WH_GETMESSAGE, GetMessageProc,
AfxGetInstanceHandle(),GetCurrentThreadId());
4、释放资源,在OCX的“OnDestroy”消息中添加如下代码:
VERIFY(::UnhookWindowsHookEx(hHook));
参考:
http://support.microsoft.com/kb/233263/en-us/
http://support.microsoft.com/kb/168777/en-us/
- 如何使得OCX控件能响应PreTranslateMessage消息?
- 如何使得OCX控件能响应PreTranslateMessage消息?
- 如何使得OCX控件能响应PreTranslateMessage消息?
- 使得OCX控件响应PreTranslateMessage消息的步骤
- 使得OCX控件响应PreTranslateMessage消息的步骤
- OCX控件响应PreTranslateMessage消息的步骤
- OCX控件中如何去响应WM_DRAWCLIPBOARD
- ActiveX 控件响应PreTranslateMessage函数
- OCX控件中界面如何捕获键盘消息
- 如何调试OCX控件
- 如何注册OCX控件
- 如何让MFC自定义类能响应消息
- PreTranslateMessage无法捕获WM_VSCROLL 滑动条添加消息响应
- SendMessage() 发出的消息 PreTranslateMessage() 不一定能接收到!
- JS实现OCX控件的事件响应
- 如何注册dll、ocx控件
- js如何调用ocx控件
- MFC中如何让一个CStatic控件响应消息
- 深入剖析wince6.0下kernelIOctl()的调用过程分析
- 如何去掉IIS中Response Headers的X-Powered-By、X-AspNet-Version和Server项
- java.sql.SQLException: Operand should contain 1 column(s)
- 就这样 误打误撞的碰到了csdn
- SWT播放视频
- 如何使得OCX控件能响应PreTranslateMessage消息?
- Design Pattern - Factory Method(C#)
- 1. free(): invalid next size (fast)
- 有两天没练手了
- 初一数学题教孩子都很吃力了
- 【转】字符编码-ANSI、UNICODE、UTF的来源与区别
- VTD-XML: The Future of XML Processing
- virtualbox的Ubuntu客户机与win7主机文件交换
- 区域协方差矩阵