托管代码和非托管代码互操作无边界
托管代码和非托管代码互操作无边界
他们圆满地完成的各自的工作,但他们的工作成果不能够相互利用,不能交互协作,你没有办法让他们沟通。 传 统的MFC程序员和时髦的.NET程序员现在就遇到了这样的问题。托管和非托管对象模型的数据类型、方法签名、错误处理机制有很大的不同,给两者之间的互 操作增加了很多障碍。一直以来,如何使.NET Framework 组件和非托管代码之间交互操作的话题被不断提出,很多程序员都参与了讨论。当然由于创新原则的要求,这种人为的技术鸿沟无法填平,实际上我们需要的也仅仅 是能让他们自如的进行沟通。看看MFC Application Project with .NET Support 1.0 (以下简称MFC.NET)能为我们做的事情。 安装完成MFC.NET之后,您会发现在您的Visual Studio.NET 2003 (此工具只能安装在VS.NET2003即7.1版本上) “ 新建工程-Visual C++工程 ” 的模板里多了一项: “ MFC Application with .NET Support ” ;里面的选项和常规的 “ MFC Application ” 一样。但生成的项目内容去有所不同,增加了"CuserControl ” 类。 用一个简单的例子开始吧。这个例子演示了使用托管UserControl作为MFC项目的视图显示。右键项目名称(假设名字为demo1),增加新项,选择 ” UserControl (.NET) ” , 输入名称 ” myUserControl ” ;在解决方案管理器中双击 ” myUserControl.h ” 就可以编辑它的内容。我们可以随意的增加.NET控件。比如增加按钮。增加点击响应事件: ” AfxMessageBox(_T("Hello,.NET world!")); ” ;然后,把 ” demo1.cpp ” 的以下代码 pDocTemplate = new CMultiDocTemplate(IDR_ demo1TYPE,RUNTIME_CLASS(Cdemo1Doc),RUNTIME_CLASS(CChildFrame),// custom MDI child frame RUNTIME_CLASS(C demo1View)); 改为: pDocTemplate = new CMultiDocTemplate(IDR_ demo1TYPE,RUNTIME_CLASS(C demo1Doc),// custom MDI child frame RUNTIME_CLASS(CUserControlView)); 最后一步,把 ” UserControlView.cpp ” 中的m_strWinCtrlID = theApp.m_strCurUserControlID;改为theApp.m_strCurUserControlID = _T("demo1.demo1. myUserControl"); m_strWinCtrlID = theApp.m_strCurUserControlID; 打完收工。编译运行,看看效果。 第二个例子: 打完收工,编译测试。 附:MFC Application Project with .NET Support 1.0 简介 Brian Liang (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |