在MFC中集成RAD.NET框架

MFC已经有十几年的历史了,然而直到今天,他仍然是Visual C++的关键组成部分。从1996年的Visual C++ 4.2至今将近8年的时间,MFC的主体特征没有出现明显的变化,依旧是“古老”的面孔,因此关于这个类库的种种评论自然是情理之中的事情了。从我个人的观点上看,MFC功能依旧健壮、强大,而且是业界少有的、稳定的、经过足够长历史考验的开发框架。深入研究这个类库,你会找到酒越酿越醇的感觉。MFC的一个成功因素之一就是提供了一套完整的Document/View框架,然而这一点也是许多针对MFC批评的矛头指向。也许是由于这个框架太经典,使人们看上去MFC不再“婷婷玉立”,而是“人老珠黄”,以至于打开今天的Visual Studio IDE的时候,多少会有点不协调的感觉:比起其它基于.NET框架的开发语言,用MFC开发会显得很“土气”、“孤独”——没有RAD机制,明显的缺乏与其它时髦对象的“互操作”能力,而且严格恪守自己的领地。每当生成一个基于文档的MFC程序,我们总是看到一张沧桑的面孔,好像刘姥姥进入大观园,与周围时髦的C#、VB.NET等存在明显的“代沟”与“不相容”。曾经有很多人问我MFC还有前途吗?是否已经行将就木?关于是MFC还是.NET的讨论时隐时现,不绝于耳。CLR是个充满魅力的世界,这种魅力,使得C#、VB.NET等变得光彩夺目。然而,MFC并没有衰老,如果你深入的了解MFC,你会发现,MFC完全可以与C#、VB.NET争奇斗艳……

在MFC项目中使用托管扩展

支持托管扩展

.NET FrameWork提供的托管扩展支持确保了在MFC项目支持托管扩展(CLR),开发者可以使MFC工程(本文我们将使用Test作为工程名称)通过打开项目的托管扩展属性开关,来增加编译器的托管支持(如图1)。


(图1:打开托管编译支持开关)

对偶.NET对象

在打开托管扩展编译开关以后,您就可以在MFC项目中使用托管对象了,通常的做法是:为每个重要的MFC对象匹配一个托管对象以形成一个对偶对,彼此匹配的对象包含指向对方的指针,这样,其他.NET对象可以通过对偶对中的.NET对象操作MFC对象;而其他MFC对象可以通过对偶对中的MFC对象操作.NET对象(如图2)。


(图2:对偶托管对象)

在Visual Studio .NET 中,没有提供关于添加托管C++类对象的向导,因此,你可以先添加一个基于托管C++的Component对象(如图3)。


(图3. Add Class向导:增加托管C++ Component对象)

添加了该testDocObject托管组件对象之后,将该对象的基类改为Object,并删除一些代码得到一个最小托管类:

namespace test
{
  __gc public class testDocObject
    : public Object
  {
  public:
    testDocObject(void)
    {
    }
  };
}

经过以上步骤,Visual Studio.NET生成的代码被装进了MFC程序,当然完全可以手动创建.h文件和.cpp文件,输入相应的代码,然后把它们添加到当前工程。由于以上步骤在托管扩展编程中经常遇到,因此,将上述过程自动化是必要的,有鉴于此,我们在附赠的光盘中提供了完整的添加.NET对象的Wizard。

时间: 2024-09-29 10:14:07

在MFC中集成RAD.NET框架的相关文章

JavaWeb工程中集成YMP框架快速上手(二)_java

本文将介绍如何在Java Web工程中集成YMP框架,操作过程基于IntelliJ IDEA做为开发环境,工程结构采用Maven构建: IntelliJ IDEA下载地址: https://www.jetbrains.com/idea/download/ Maven下载地址: http://maven.apache.org/ 创建项目 1. 打开IDEA开发环境并点击Create New Project按钮开始创建新项目向导,如下图-1所示: 2. 在New Project窗口中选中左侧Mave

更新MFC中的视图,跟踪.NET Framework中的事件

本文配套源码 如何更新MFC中的视图? 如何跟踪.NET Framework 中的事件? 我在 MDI 程序中打算通过 CMainFrame 中的定时器事件来更新所有的子窗口. 视图用于显示许多图表.用如下的代码只能更新当前活动窗口: GetActiveWindow()->GetActiveView()->GetDocument() 是否有其它的方法从 CMDIFrame 类中获得所有的子窗口或者所有的文档? Makarand 你的情况并不罕见.许多采集实时数据的程序需要定时更新屏幕.即使你的

ASP.NET中集成百度编辑器UEditor

  本文给大家讲解的是如何在ASP.NET中集成百度编辑器UEditor的方法和具体的步奏,十分的详细,有需要的小伙伴可以参考下. 0.ueditor简介 UEditor是由百度WEB前端研发部开发的所见即所得的开源富文本编辑器,具有轻量.可定制.用户体验优秀等特点.开源基于BSD协议,所有源代码在协议允许范围内可自由修改和使用. UEditor官网:http://ueditor.baidu.com/website/index.html UEditor官方文档地址: http://fex.bai

c++-mfc中 的字符插入表格中的问题

问题描述 mfc中 的字符插入表格中的问题 字符串格式:{小明|25|2011070737|}{小红|24|2011070764} 表格列名:{姓名|年龄|学号|} 想写一个函数 根据判断为一组数据 把上边两组数据插入到列名如上的中表格 解决方案 百度一下你就知道了啊啊啊啊啊啊 啊 解决方案二: 思路挺清楚,就是问题不明确,具体哪里不会?建议你先试着写个框架,说明具体有问题. 解决方案三: 建议用map,map 结构体定义为姓名和年龄, 第一个参数为学号, 生成的map默认按学号升序排列

Codeigniter中集成smarty和adodb的方法_php实例

本文实例讲述了Codeigniter中集成smarty和adodb的方法.分享给大家供大家参考,具体如下: 在CodeIgniter中要写自己的库,就需要写两个文件,一个是在application/init下面的init_myclass.php文件(如果没有init目录,自己创建).另外一个就是在application/libraries目录下创建myclass.php文件. 这里myclass是你的类名.一些规则大家看手册就好了,我这里直接就说步骤了. 1)在application/libra

Spring Boot中集成Spring Security 专题

if语句中条件判断就是检查当前的url请求是否是logout-url的配置值,接下来,获取用户的authentication,并循环调用处理器链中各个处理器的logout()函数,前面在parse阶段说过,处理器链中有两个实例,处理会话的SecurityContextLogoutHandler及remember-me服务,我们来一一看看它们的logout函数实现: 2.1.0 SecurityContextLogoutHandler public void logout(HttpServletR

请问mfc中如何实现工具栏按钮的自定义添加与删除

问题描述 请问mfc中如何实现工具栏按钮的自定义添加与删除 mfc单文档程序运行后,左上角有一个系统自动生成的工具栏,点击该工具栏右边的小倒三角形,会出现如下图所示的自定义添加或删除按钮的选项 现在我自己创建了一个工具栏,想实现上述功能,请问该怎么做?谢谢~~~ 解决方案 难道你的没有么?你可以试试BCGControlBar,它是CMFCxxx控件的商业完整版本.包含了和Office一样的自定义对话框,不需要写任何代码. 解决方案二: 需要用MFC等提供的框架,才会有,它帮你实现了.你自己创建的

教程-MFC中界面美化与皮肤制作

问题描述 MFC中界面美化与皮肤制作 现在只会用MFC编写一些小程序,但界面一直都是默认的那种,顶多就能换个对话框背景,想要作一些界面比较好看的程序,请大神给一些教程,之前在网上查的用skinsharp和SHEditor,但也不是太懂 解决方案 Windows UI 框架 解决方案二: MFC从入门到精通 你学这个之前必须得了解计算机系统消息的处理机制 会很有帮助

mfc-新手遇到的关于MFC中的一些问题.

问题描述 新手遇到的关于MFC中的一些问题. 这种界面可以用什么模式编写?SDI/MDI还是基于对话框?每种模式都可以建立标签吗? 解决方案 MFC向导sdi,选择资源管理器样式,或者在高级设置中添加一个面板,都可以. 解决方案二: 效果图 解决方案三: Sdi,然后切割窗口,左边窗口CFormView,放各种控件,右边CView等,画图. 解决方案四: SDI工程,基类选择CView/CFormView都可以,利用CSplitterWnd拆分视图框架窗口,左边那个View可以用CFormVie