让动态创建的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控件的引用,添加引用成功.在代码中实例化类的实例也没有问题,但在调用其方法或属性时总是 ... 
随机推荐
- Ganglia 权威指南-安装Ganglia过程
			转自于:http://blog.csdn.net/xxd851116/article/details/21527055 http://www.dataguru.cn/article-3816-1.ht ... 
- 获取sdcard和内存的存储空间
			package com.example.sdcardspace; import java.io.File; import android.os.Bundle; import android.os.En ... 
- redis安装及数据类型简介(string、list、set、sorted_set、hash)
			一:简介: redis国内最大的案例--->新浪微博 memcache:是key-value数据库 数据类型:只支持key value数据 过期策略:支持 持久化:不支持(可以通过三方程序) 主 ... 
- Python 第六篇(上):面向对象编程初级篇
			面向:过程.函数.对象: 面向过程:根据业务逻辑从上到下写垒代码! 面向过程的编程弊:每次调用的时候都的重写,代码特别长,代码重用性没有,每次增加新功能所有的代码都的修改!那有什么办法解决上面出现的弊 ... 
- Python常用模块中常用内置函数的具体介绍
			Python作为计算机语言中常用的语言,它具有十分强大的功能,但是你知道Python常用模块I的内置模块中常用内置函数都包括哪些具体的函数吗?以下的文章就是对Python常用模块I的内置模块的常用内置 ... 
- NOI08冬令营 数据结构的提炼与压缩
			无聊随手翻,翻到了一个这样的好东西--据结构的提炼与压缩: 为了防止以后忘记,这里把论文里的题目都纪录一下吧. 1.二维结构的化简 问题一:ural 1568 Train car sorting 定义 ... 
- Netty源代码学习——ChannelPipeline模型分析
			參考Netty API io.netty.channel.ChannelPipeline A list of ChannelHandlers which handles or intercepts i ... 
- Redhat下安装fedora
			步骤具体解释: 1:到fedora官网下载fedora的DVD镜像文件. 2:在linux系统中预留一部分为未分区的空间大约50G 3: 在linux系统上的根分区创建一个fedora的目录,里面 ... 
- 史上最全的java随机数/字符串生成算法(转)
			代码如下: package com.zuidaima.core.util; import java.util.Random; public class RandomUtil { public stat ... 
- VS2008通过 map 和 cod 文件定位崩溃代码行
			VS 2005/2008使用map文件查找程序崩溃原因 一般程序崩溃可以通过debug,找到程序在那一行代码崩溃了,最近编一个多线程的程序,都不知道在那发生错误,多线程并发,又不好单行调试,终于找到一 ... 
