经典与现代的结合:在MFC中集成RAD .NET框架
日期:2007年6月24日 作者: 查看:[大字体 中字体 小字体]-
class CWFControlWrapper : public CWnd
{
public:
CWFControlWrapper();
virtual ~CWFControlWrapper(void);
IUnknown *pUnkControl;
IUnknown *GetManagedControl()
{
return pUnkControl;
}
void SetControlSite(COleControlSite *pSite)
{
m_pCtrlSite = pSite;
}
};
下一步,要设计一个通用的CUserCtrlView类(从CView类派生),使得在CWFControlSite中指定的.NET控件可以像在COleControlSite中指定的ActiveX控件一样显示给用户。正象每个ActiveX控件必需用一个CWnd对象进行创建一样,一个支持.NET控件的CView类需要一个对应的CWnd对象,CWFControlWrapper就是针对这个目的设计的,通过CWFControlWrapper对象,MFC程序可以得到.NET对象对应的IUnknow、IDispatch。稍后我们介绍CUserCtrlView类的具体设计和使用方法。

(图5:MFC框架中.NET控件的创建)
一般而言,控件的对话框消息处理是一个极为关键的问题,在网上能找到的MFC中宿主控件的解决方法中,均没有实现.NET控件的对话框消息处理,一个明显的特征是不能处理“Tab”键消息为此,我们重载了CUserCtrlView的PreTranslateMessage函数:BOOL CUserCtrlView::PreTranslateMessage(MSG *pMsg)
{
BOOL bRet = FALSE;
if(m_Control.pUnkControl != NULL)
{
CComQIPtr
spInPlace(m_Control.pUnkControl);
if(spInPlace)
bRet =(S_OK == spInPlace->
TranslateAccelerator(pMsg)) ?
TRUE : FALSE;
}
if(CView::PreTranslateMessage(pMsg))
return TRUE;
CFrameWnd *pFrameWnd = GetTopLevelFrame();
if(pFrameWnd != NULL
&& pFrameWnd->m_bHelpMode)
return FALSE;
// start with first parent frame
pFrameWnd = GetParentFrame();
while(pFrameWnd != NULL)
{
if(pFrameWnd->PreTranslateMessage(pMsg))
return TRUE;
pFrameWnd = pFrameWnd->GetParentFrame();
}
return bRet;
}
这样可以使得CUserCtrlView可以正确的处理.NET Control的对话框消息。
回归RAD世界
接下来我们看看如何在工程中插入一个.NET用户自定义控件。我们增加一个新的托管类testControl,代码如下: - 上一页 [1] [2] [3] [4] [5] [6] 下一页
-
- 经典与现代的结合:在MFC中集成RAD .NET框架 相关文章:
- ·学习CSS制作网页的多个经验技巧
- ·学习CSS制作网页总结的一些经验技巧
- ·经典:交换机故障检测检查表
- ·网站优化的几个好经验
- ·漂亮MM经典时尚服饰设计
- ·回忆曾经的童年 纯朴天真的画面
- ·站长的视频建站时代 离你已经不远了
- ·简洁优雅 大牌经典女装设计欣赏
- ·腾讯 TM2008 Preview3 已经发布
- ·EFS加密技术的概念分析及一次解密经过
- 经典与现代的结合:在MFC中集成RAD .NET框架 相关软件
- ·经典回顾《三国群英传2》
- ·冠军足球经理2007试玩
- ·《极品飞车2》dos经典怀旧试玩
- ·超级经典CS作弊器
- ·FC任天堂红白机中文模拟器+经典游戏大集合试玩
- ·怀旧经典《大航海时代2》模拟器下载
- ·经典回顾:决战世界之巅—Moon 3:2胜Grubby录象
- ·经典街机游戏《黑色封印》模拟器
- ·经典街机游戏《恐龙岛》模拟器
- ·回味经典《星际争霸:母巢之战》开场动画
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:C/C++头文件一览
下一篇:C++:谁动了我的指针
精品推荐
热点TOP10
- ·用c#监控网络流量
- ·C#编写的windows计算器-源代码
- ·飞机订票系统设计
- ·C/C++笔试、面试题目大汇总
- ·《俄罗斯方块》程序编写详解
- ·Windows API-GDI入门基础知识详解(2)
- ·socket编程原理
- ·打字游戏
- ·七年IT奋斗纪实及感悟
- ·C #中的几个线程同步对象方法
- ·牛顿和拉格朗日插值算法
- ·VC++动态链接库编程之MFC扩展 DLL
- ·C# 操作文件
- ·如何用C#编写文本编辑器
- ·c#操作word表格
- ·编程特例篇——LOGO语言
- ·Raw Socket(原始套接字)实现Sniffer(嗅探)
- ·无废话C#设计模式之九:Proxy
- ·C#编程中的 New 关键词的几种用法
- ·实战开发 C# 索引器学习笔记
特别推荐
- ·C#程序开发中的常用函数汇总
- ·C#数据库操作的三种经典用法
- ·C/C++笔试、面试题目大汇总
- ·Beej的网络socket编程指南
- ·socket编程原理
- ·C语言的常用库函数使用方法分析及用途
- ·在C语言中如何处理时间和日期
- ·C++设计模式之Singleton
- ·VC++动态链接库编程之MFC扩展 DLL
- ·TCP/IP网络重复型服务器通信软件的设计
- ·DirectX游戏开发入门
- ·经典与现代的结合:在MFC中集成RAD .NET框架
- ·Windows API-GDI入门基础知识详解(2)
- ·Visual C++ 入门精解
- ·C#基础概念二十五问
- ·用C#实现pdf文件的完整性验证
- ·成为嵌入式程序员应知道的0x10个问题
- ·TCP/IP编程实现远程文件传输
- ·几个C#编程的小技巧
- ·C# 编码规范和编程好习惯
