重写MFC基类调用WPF界面
时间:2011-11-27
来源:互联网
好了,闲话就不多说了,我来说下目前的问题。MFC的默认界面是比较难看的,又不想改代码,于是老大有了MFC和WPF结合的想法,问我是否可行。我本人是对WPF仅处于知道这个状态(穷,没用过WIN7),于是放上这个话题让大家探讨下。
1.老大的想法是重写MFC基类,绘制部分用WPF的替代(对话框以部分常用控件),其余方法不变(不想改动工程,这是很大的工作量),问这个是否可行?
2.如果可行,麻烦列位帮忙评估一下工作量,量大那肯定是没时间去完成的。
3.如果不可行,麻烦陈述一下理由,谢谢大家。~

作者: xuddk727 发布时间: 2011-11-27
1)运行时环境不同,WPF是基于.NET的,MFC是传统WIN32的。前者与后者的代码完全不可能兼顾在同一个工程中,而且工程文件完全有差异。
2)可行方法之一就是将UI逻辑与功能逻辑分开成模块,所有和UI相关的界面代码采用WPF重写,然后去调用功能逻辑模块,不过调用时的参数传递之类的又得遵循.NET的调用规矩了。
3)另一可行方法,就是找个MFC的界面库美化下好了。CSDN里也有各种界面库的讨论。这个比第2)要靠谱点...工作量相对可能会少很多。
作者: dream238 发布时间: 2011-11-27
2)可行方法之一就是将UI逻辑与功能逻辑分开成模块,所有和UI相关的界面代码采用WPF重写,然后去调用功能逻辑模块,不过调用时的参数传递之类的又得遵循.NET的调用规矩了。
的确是有这么一个可行性,但是这样做得话,当以后工程变得异常复杂的时候,那时候问题就来了,不光程序以后很难维护,而且你的工程部分有可能会遇到这么一个情况,参数不好模拟,就是在C#/C++之间进行参数传递时要把一方的参数换成另一方能认并且要一致的,如果你这样使用的话应该不难在你的工程中常发现参数有10个或者甚至更多的参数,这势必造成以后维护的困难,而且CLR的引入必定会对开发人员本身的技术来说要求更高一点.
总之,随着你工程的不断变大,程序异常的复杂,不难逃避被重写的命运。
最好是要么直接用WPF写(c#),要么用MFC(C++)借用第三方库实现,最好不要在C#中调用C++,或者C++中调用C#,这样不是说不好,而是说不太适合相对比较复杂工程。
以上只是个人观点.说的不对的地方欢迎指出.
作者: yuucyf 发布时间: 2011-11-27
我曾在论坛看到有讲述win32调用WPF的示例,想来MFC调用应该也问题不大,自然,UI和功能分离没什么关系,因为程序中并无处理PAINT,我们所需要的就是改写基类的PAINT调用WPF的方法,可惜这个我并不熟悉,想了解下这个工作量大约多大?
至于第三点已经被否决掉了,老大应该是不欲使用界面库。
作者: xuddk727 发布时间: 2011-11-27
引用 1 楼 dream238 的回复:
2)可行方法之一就是将UI逻辑与功能逻辑分开成模块,所有和UI相关的界面代码采用WPF重写,然后去调用功能逻辑模块,不过调用时的参数传递之类的又得遵循.NET的调用规矩了。
的确是有这么一个可行性,但是这样做得话,当以后工程变得异常复杂的时候,那时候问题就来了,不光程序以后很难维护,而且你的工程部分有可能会遇到这么一个情况,参数不好模拟,就是在C……
我本身不会去处理继承类的onpaint(并且我以后都要求不处理),只改写cdialog基类,paint调用wpf的方法,不知道这种是否可行,若可行,工作量大约有多大?
作者: xuddk727 发布时间: 2011-11-27
作者: star_luowei 发布时间: 2011-11-27
买个界面库,什么都搞掂了。codejock xtreme
作者: xuddk727 发布时间: 2011-11-27
实际上,楼主的问题不是技术上的问题,而是体制的问题。体制不兼容,是很难融合的。
作者: redui 发布时间: 2011-11-27
想得太简单了。MFC窗口基本上都是基于子窗口来运作的,而WPF只是一个单窗口,这不是一个PAINT替换就能搞定的。即使你替换成功,主窗口已经像WPF那么漂亮了,还是会被一大堆丑陋的子窗口覆盖。WPF是一个完整独立的UI解决方案,包括绘制、消息响应、“控件”布局、命中测试等一大堆功能,不是简单的换肤工具,如果只是为了外观好看,还不如自己写绘制代码,或者找个成熟的换肤界面库,不见得会增加多少成本(私……
我先讲讲当初为什么想如此做,第一,工程的对话框相对很简单,因为并没有处理PAINT等消息,并且绝大部分对话框只有按钮和文本控件,因此当时觉得替换相对来说成本不大,也杜绝了处理相对复杂的控件,于是想来觉得应该可以尝试一下,不过照胡大哥说的来看,WPF也是类似DUI,并不是多子窗口的,这样一来,子窗口处理就是大问题了,如此也罢,改日再试试,不行就拉倒了。
作者: xuddk727 发布时间: 2011-11-27
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28