让动态创建的ActiveX控件响应Windows消息
当我们通过
CWnd::CreateControl()
动态创建
ActiveX
控件时,
Windows
消息并不会被发送给我
们的由
CWnd
派生得控件类。例如,即使我们为
WM_KILLFOCUS
消息创建了句柄,这个句柄
也是不会被调用的。(不信你试试
:))
引起这个问题的原因时,
CWnd::CreateControl()
并不会使我控件的
HWND
子类化。
知道了原因,要解决问题就不难了。我们只要在控件创建之后使它子类化就行了。通过一下步
骤可以实现:
1.
当然是添加控件啦,先生成控件的
C++
包容类。
2.
再要创建控件的类中声明成员变量,此成员变量是包容类的指针对象。
3.
在包容类的头文件中添加:
//{{AFX_MSG(CMyClass)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
CMyClass
是实际的类名。
4.
在包容类的
CPP
文件的
#include
段下面添加:
BEGIN_MESSAGE_MAP(CMyClass,
CWnd)
//{{AFX_MSG_MAP(CMyClass)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
5.
删除工程目录下的
.clw
文件,在工程中打开
ClassWizard
,先选
yes
,在选
Add
All
。
6.
现在你就可以使用
ClassWizard
为控件包容类添加消息映射和处理函数了。
完成这些修改后,你必须创建控件并且使它子类化,下面是个例子:
void
CSDIApp2View::OnInitialUpdate()
{
CView::OnInitialUpdate();
m_pFlexGrid
=
new
CMSFlexGrid;
CRect
rect;
GetClientRect(&rect);
m_pFlexGrid->Create(NULL,
WS_CHILD
|
WS_VISIBLE,
rect,
this,
IDC_FLEXGRID);
HWND
hWnd
=
m_pFlexGrid->Detach();
m_pFlexGrid->SubclassWindow(hWnd);
}
让动态创建的ActiveX控件响应Windows消息的更多相关文章
- WPF 中动态创建和删除控件
原文:WPF 中动态创建和删除控件 动态创建控件 1.容器控件.RegisterName("Name",要注册的控件) //注册控件 2.容器控件.FindName(" ...
- 【VS开发】动态添加的ActiveX控件如何响应事件
http://blog.csdn.net/xiaoqiqixiao/article/details/574542 今天在csdn上看到一朋友问如何响应动态添加的控件的事件,搜索资料,发现对于一般的应用 ...
- WPF 中动态创建、删除控件,注册控件名字,根据名字查找控件
动态创建控件 1.容器控件.RegisterName("Name",要注册的控件) //注册控件 2.容器控件.FindName("Name") as 控 ...
- js动态加载activeX控件在IE11与低版本IE中的差异
由于IE11更加遵循W3C规范,所以IE11与低版本IE在加载activeX时有差别. 1.IE11中动态加载activeX的顺序 var objectTag = document.createEle ...
- duilib中各控件响应的消息类型
消息 说明 Sender click 鼠标点击 CButtonUI dropdown 下拉显示 CComboUI headerclick 点击列标题 CListHeaderItemUI itemact ...
- 【VS开发】动态创建ActiveX控件
bool CCollectDataDlgDlg::CreateMyCtrl(LPRECT lpRect, UINT nID, CWnd *pParent) { CLSID clsid; wstri ...
- ActiveX控件(MFC篇)
目录 第1章 VC++6.0创建控件 1 1.1 目标 1 1.1.1 方法 1 1.1.2 属性 1 1.1.3 事件 1 1.2 创建项目 2 1.3 项目结构 ...
- Win32编程点滴3 - 简单ActiveX控件的使用
虽然这里一片的.net气氛,到处充斥着像MVC.WPF.WorkFlow.LINQ等各种niubility的术语.但我们使用的Windows还是由COM技术主宰着:我们在选择日常使用的软件时,也会避免 ...
- C#调用ActiveX控件
背景:最近项目中需要用到ActiveX控件,项目是在.Net平台下开发的.因此就直接在项目中添加了对ActiveX控件的引用,添加引用成功.在代码中实例化类的实例也没有问题,但在调用其方法或属性时总是 ...
随机推荐
- 测试DOM0级事件和DOM2级事件的堆叠
1. 问题 如果大家看过北风网CJ讲师的Javascript视频教程,就可以看到其封装了一个很强的事件添加和删除函数,如下所示 function addEvent(obj, evtype, fn) { ...
- SystemTap----将SystemTap脚本编译成内核模块
当运行SystemTap脚本时,会根据脚本生成一个内核模块,然后插入到系统中执行后退出.这个过程总共分为5个阶段:parse, elaborate, translate, compile, run ...
- C++sort函数使用总结
头文件:algorithm 对于(整数/字符)数组进行比較时,可直接通过sort(a,a+n)或sort(a.begin(),a.end())进行排序,默认升序排列,须要高速实现降序时,有三种方案 1 ...
- jQuery(expression, [context]) , $(即jQuery)的參数问题
jQuery(expression, [context]) 返回值:jQuery 概述 这个函数接收一个包括 CSS 选择器的字符串,然后用这个字符串去匹配一组元素. jQuery 的 ...
- jQuery Mobile 入门基础教程
jQuery Mobile是jQuery在手机上和平板设备上的版本.jQuery Mobile 不仅会给主流移动平台带来jQuery核心库,而且会发布一个完整统一的jQuery移动UI框架. jQue ...
- CSS鼠标样式
1.缺省方式(箭头形状): cursor:default; 2.手型 cursor: pointer; //通用的cursor: hand; //为了兼容ie老版本,可以同时写上
- DFS深搜——Red and Black——A Knight's Journey
深搜,从一点向各处搜找到全部能走的地方. Problem Description There is a rectangular room, covered with square tiles. Eac ...
- 使用ViewPager模拟实现应用程序启动界面
经常在开发应用程序的时候,软件启动有启用动画界面,一般使用图片来进行界面该版本最新更新等等内容,今天来使用ViewPager来模拟实现这功能,也希望对大家有个小小的参考作用,在以后的项目中能够使用到. ...
- TortoiseSVN 文件关联图标不显示的解决方法
对于SVN来说,因为每个图标都代表着不同的含义,预示着不同的状态,是指示灯的作用,如果没有正确的图标很可能造成数据的丢失等 之前看了网上其他人写的帖子,,有一些是直接删除注册表下“ShellIconO ...
- PHP - 概述
第1章 PHP概述 学习要点: 1.PHP基础知识 2.PHP的环境配置 3.安装三款主流程序 4.PHP开发工具的选择 5.一个简单的示例 一.PHP基础知识 PHP PHP是一种目前最流行的服务端 ...