让动态创建的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控件的引用,添加引用成功.在代码中实例化类的实例也没有问题,但在调用其方法或属性时总是 ...
随机推荐
- libgdx, mouse 关节
鼠标与body的交互就靠这个mouse 关节了. 在使用中:主要分成3步: 步1:mouseDown : 这个时期,调用world->QueryAABB.它有一个回调接口,并依据鼠标指针指定一个 ...
- 亚马逊带Marketplace product code的image无法再mount到其他镜像上
这是对已发布镜像的保护么?难道对其进行修改的路彻底断掉了? 以volume形式attach也不行,dd成raw再读取也读不了,敢问路在何方呢 If a volume has an AWS Market ...
- 2008r2 做windows域控制器
新配一个: 1.装DNS服务. 2.装domain管理. config domain: 客户端172.16.1.34 ping zyctest
- Sublime Text 2 新建C++ build system
首先要有个MinGW(我这里借用ceemple的编译器 ,mingw32) 设置环境变量 右击我的电脑,点属性->高级->环境变量. 在系统环境变量在PATH里加入D:\Ceemple\m ...
- javascript:设置URL参数的方法,适合多条件查询
适用场景:多条件查询情况,如下图所示: 通过设置URL参数,再结合数据源控件设置的RUL参数,就能进行简单的多条件查询了. javascript函数: <mce:script type=&quo ...
- 开源OCR光学字符识别
纸张在 许多地方已日益失宠,无纸化办公谈论40多年,办公环境正限制纸山的生成.而过去几年,无纸化办公的概念发生了显着的转变.在计算机软件的帮助 下,包含大量重要管理数据和资讯的文档可以更方便的以电子形 ...
- php:兄弟连之面向对象版图形计算器2
上篇说到通过result.class.php来分流,因为三个类都继承了shape这个类,让我们来看一下,面向对象中的继承. shape.class.shape文件 <?php abstract ...
- UVA 10317 - Equating Equations (背包)
Problem F Equating Equations Input: standard input Output: standard output Time Limit: 6 seconds Mem ...
- vbox要手动mount才能挂载windows的共享文件夹(好用,不用安装samba了)
mount -t vboxsf BaiduShare /mnt/bdshare/ 我按照这篇文章成功: http://www.wuji8.com/meta/448016166.html 其它参考: h ...
- 在Android手机上获取其它应用的包名及版本
转载请注明出处:http://blog.csdn.net/jason_src/article/details/37757661 获取Android手机上其它应用的包名及版本方法有非常多,能够通过AAP ...