ActiveX 中检测击键消息方法实现
来源:互联网 发布:拍电视剧编辑软件 编辑:程序博客网 时间:2024/06/06 01:55
快捷键, 如箭头键, 首先接收由 ActiveX 控件容器的消息泵。 即使控件有焦点, 没有收到邮件键击, 对控件容器, 如箭头和 TAB 键有特殊含义。 MFCActiveX 控件有机会以通过覆盖其 PreTranslateMessage 函数截获这些消息。
对于 MFCActiveX 控件但是, 可以不总是调用 PreTranslateMessage。
对于 MFCActiveX 控件但是, 可以不总是调用 PreTranslateMessage。
MFCActiveX 控件中 PreTranslateMessage 由调用 TranslateAccelerator IOleInPlaceActiveObject 接口的控件的方法。 为控件 UI 活动是当前 InternetExplorer 只调用此方法。 仅一个控件一次只能 UI 活动。
任何控件当首次加载网页 InternetExplorer 不会自动 UI Activate。 InternetExplorer 等待用户标签可 ActiveX 控制页到 UI Activate 上它。 它们是使用鼠标时也, MFCActiveX 控件 UI Activate 本身。 MFCActiveX 控件, 中这样 COleControl::OnLButtonUp 中。
如果您有子控件内您 COleControl, 子控件上单击鼠标消息不发送到 COleControl 和即使子控件具有只被授予键盘焦点 MFC 不 UI - 不激活 ActiveX 控件。 InternetExplorer 截获击键并不授予机会来筛选 PreTranslateMessage 中这些控件。
任何控件当首次加载网页 InternetExplorer 不会自动 UI Activate。 InternetExplorer 等待用户标签可 ActiveX 控制页到 UI Activate 上它。 它们是使用鼠标时也, MFCActiveX 控件 UI Activate 本身。 MFCActiveX 控件, 中这样 COleControl::OnLButtonUp 中。
如果您有子控件内您 COleControl, 子控件上单击鼠标消息不发送到 COleControl 和即使子控件具有只被授予键盘焦点 MFC 不 UI - 不激活 ActiveX 控件。 InternetExplorer 截获击键并不授予机会来筛选 PreTranslateMessage 中这些控件。
下面是典型 PreTranslateMessage。 此代码转发箭头, HOME, 并 END 键以便他们可以使用 MESSAGE_MAP 项接收回控件:
// trap keys and forward on to the control
BOOL CMyActiveXCtrl::PreTranslateMessage(MSG* pMsg)
{
switch (pMsg->message)
{
case WM_CHAR: // 击键OnChar消息
SendMessage (pMsg->message, pMsg->wParam, pMsg->lParam);
break;
case WM_KEYDOWN:
case WM_KEYUP:
switch (pMsg->wParam)
{
case VK_RETURN:每当激活子控件是否将 ActiveX 控件, 中有子控件 UI Activate 需要整个控件。 例如, 如果有一个编辑控件将 ActiveX 控件, 内部将处理程序如下添加到您 ActiveX 控件类:
case VK_UP:
case VK_DOWN:
case VK_LEFT:
case VK_RIGHT:
case VK_HOME:
case VK_END:
SendMessage (pMsg->message, pMsg->wParam, pMsg->lParam); // Windowless controls won't be able to call SendMessage. // Instead, just respond to the message here.
return TRUE;
}
break;
}
return COleControl::PreTranslateMessage(pMsg);
}
int CMyActiveXCtrl::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message)因为即使, 是页, 上只控件 InternetExplorer 可能不立即 UI Activate 控件, 它可能需要创建控件时自动申请 UI Activation。 这进行期间 (COleControl::OnCreate WM _ CREATE) 处理程序。 无窗口控件得不到 WM _ CREATE 或任何窗口消息 ; 因此, 此代码不工作无窗口控件中。 还要注意, 这不保证保持激活 UI 控件。 如果有请求以类似方式, UI Activation 页上其他控件一个将最终 UI 激活并接收击键消息所述。 如果用户离开 ActiveX 控件, TABs InternetExplorer 将自动 deactivate UI 控件。
{ // 添加的消息映射
if (!m_bUIActive)
OnActivateInPlace (TRUE, NULL); // == UI-Activate the control
return COleControl::OnMouseActivate(pDesktopWnd, nHitTest, message);
}
int CMyActiveXCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1;
OnActivateInPlace (TRUE, NULL); // == UI-Activate the control return 0;
}
- ActiveX 中检测击键消息方法实现
- 6.2 击键消息
- 6.2 击键消息
- ActiveX控件中不安全方法漏洞的检测技术
- Windows程序设计--击键消息和字符消息
- TranstateMessage函数将击键消息转换为字符消息
- 如何在页面中检测ActiveX控件的安装情况
- 如何在页面中检测ActiveX控件的安装情况
- 检测注册表中ActiveX控件是否被注册
- NAT检测实现方法
- 在ATL无窗口ACTIVEX控件中响应timer消息
- ActiveX控件在IE中不响应Backspace消息
- Windows中ActiveX控件注册的方法
- C# ActiveX控件中调用JavaScript方法
- Activex控件中显示MFC窗口方法
- c# ActiveX控件中调用javaScript方法
- Redmine中消息主动推送的实现方法
- Win32 键盘事件 - 击键消息、字符消息、插入符号(光标)
- 普及的力量
- 解决网络时断时续:Nvidia-NFORCE-nvnet.ko网卡驱动安装详解
- 小赵,是我
- ASP.NET 2.0 的内部变化
- Debian and Ubuntu: uneasy coexistence
- ActiveX 中检测击键消息方法实现
- TreeView 控件与Vs2005
- Asp.net中实现同一用户名不能同时登陆(单点登陆)
- 图片上叠加时间(陆)10.23
- 一个关于结对编程(Pair Programming)的讲义
- C++ 编程规范
- Fedora网络配置工具system-config-network介绍 zz
- 优秀的内容管理三剑客-plone/zope/python
- robust object detection