可否为VC做一个跟BCB一样的可视化工具

ANDYLUAN 2002-12-09 02:18:17
大家多发表意见!
...全文
69 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
GoogleGeek 2002-12-15
  • 打赏
  • 举报
回复
不可以
这是mfc得先天不足的地方
--------------------------
C语言的选择----C++Builder or Visual C++?

 首先,从它们的应用程序框架(Application Frame,有时也称为对象框架)进行比较。Visual C++采用的框架是MFC。MFC不仅仅是人们通常理解的一个类库。(同样,Delphi和C++Builder使用的VCL的概念也不仅仅是一个控件库。)你如果选择了MFC,也就选择了一种程序结构,一种编程风格。MFC早在Windows 3.x的时代就出现了,经过这些年的不断补充和完善,MFC已经十分成熟。但由于原型出现得比较早,MFC相比于VCL落后了一个时代(例如对于运行时识别的支持)。尽管微软对MFC的更新没有停止,我也经常读到持“只要Windows不过时,MFC就不会过时”之类观点的文章,但就像Borland的OWL框架的淡出历史一样,MFC的淡出也是早晚的事。如果MFC青春永驻,微软的开发人员也不会“私自”开发出基于ATL的WTL了,更不会有什么.NET了。当然,WTL的地位不能和MFC比,它并不是微软官方支持的框架,封装的功能也相当有限。但至少也反衬出了MFC存在的不足。

我以为,最能体现一个应用程序框架的先进性的是它的委托模型,即对Windows消息的封装机制。(对Windows消息驱动机制的封装就不是很容易的)。"WindowsAPI 是windows95和windows NT的一部分,在早期的windows程序开发中,程序员必须用C语言编写大量的重复代码后才能开始编写处理问题的是指部分。Windows 使得程序与硬件无关。增强了程序的可移植性。所有的windows应用程序都采用消息驱动机制,亦即windows程序是通过操作系统发送的消息来处理用户的输入的。 The window receives the user input in the form of "messages" to the window. A window also uses messages to communicate with other windows. Getting a good feel for messages is an important part of learning how to write programs for Windows.When I say that "Windows sends a message to the program" I mean that Windows calls a function within the program-a function that you write and which is an essential part of your program's code. The parameters to this function describe the particular message that is being sent by Windows and received by your program. This function in your program is known as the "window procedure." -----最自然的封装方式是采用虚成员函数。如果要响应某个消息就重载相应的虚函数。但是MFC采用的却是“古老”的宏定义方法----MFC实际上是一个扩展的、丰富的C++类层次结构,在MFC中封装了SDK结构、功能及应用程序框架内部技术,隐藏了过去许多的Windows程序必须处理的许多的重复工作。用宏定义方法的好处是省去了虚函数VTable的系统开销。(由于Windows的消息种类很多,开销不算太小)。不过带来的缺点就是映射不太直观,和VCL的委托模型相比,MFC的映射方法就显得太落后了。而C++Builder对C++语言进行了扩展,以便引入组件、事件处理、属性等新特性。由于功夫做在编译器级,生成的源代码就显得十分简洁。但是由于扩展的非标准特性,使用VCL的C++Builder的源代码无法被其它编译器编译。而MFC的功夫做在源代码级,虽然消息映射代码较为复杂且不直观,但兼容性非常好。只要你有MFC库的源代码,你的MFC程序理论上用任何符合ANSI标准的编译器均可编译通过。C++Builder 3以上版本可以原封不动直接编译Visual C++程序,很多人认为这是C++Builder的兼容性好,实际上很大程度应归功于MFC的兼容性好;而因为C++Builder对语言作了扩展,VC不能编译C++Builder的程序,看来在这方面VC要输给C++Builder了。而且VCL所支持的组件、属性等都是MFC所缺乏的特性。虽然VC也能支持组件,但要通过AppWizard先生成一个“包裹”类(wrapper),不如VCL来得简洁。有很多人使用C++Builder就是冲着控件板上那一大堆组件来的,VC虽然能使用的组件也很多(也许不比C++Builder少),但由于不方便而对RAD程序员没有吸引力。
------------------
上面是本人整理的以前的帖子
xuefl66 2002-12-15
  • 打赏
  • 举报
回复
see
wj59 2002-12-09
  • 打赏
  • 举报
回复
up

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧