MFC太庞大也太庞杂,不易使用,而CBC提供的库居然是VCL的,CBX提供的虽然是个口碑甚好的开源库WxWINDOWS,但是从其源代码中可以看出,其消息映射机制还是MFC的那一套,仍然无可避免的将丑陋的实现细节暴露给用户。
长久以来,WINDOWS下搞GUI (RAD)开发的用户抱怨没有一个良好的RAD开发环境,MFC当然不行,MFC已经行将就木(虽然其中的思想仍然有价值),我们需要一个像java swing或.net form那样干净整洁的库,但是必须是以纯C++实现的!
CUJ的contribute editor之一 john torjo 为我们带来了——Win32 GUI Generics!
在win32环境下用C++进行GUI开发的人们有福了...这是一个纯C++库,利用了C++里面的高级特性,避免了MFC里面的诸多问题,由于使用的event handler机制和MFC里面的MESSAGE MAP机制有本质的不同,所以不像MFC里面有一打莫名其妙的宏,整个框架非常干净整洁,当然,编写出来的代码也一样!Generics and GUI do mix,after all... !!!http://www.torjo.com/win32gui/index.html
长久以来,WINDOWS下搞GUI (RAD)开发的用户抱怨没有一个良好的RAD开发环境,MFC当然不行,MFC已经行将就木(虽然其中的思想仍然有价值),我们需要一个像java swing或.net form那样干净整洁的库,但是必须是以纯C++实现的!
CUJ的contribute editor之一 john torjo 为我们带来了——Win32 GUI Generics!
在win32环境下用C++进行GUI开发的人们有福了...这是一个纯C++库,利用了C++里面的高级特性,避免了MFC里面的诸多问题,由于使用的event handler机制和MFC里面的MESSAGE MAP机制有本质的不同,所以不像MFC里面有一打莫名其妙的宏,整个框架非常干净整洁,当然,编写出来的代码也一样!Generics and GUI do mix,after all... !!!http://www.torjo.com/win32gui/index.html
解决方案 »
- 类视频播放器
- CXX0033:Error:error in OMF type information
- Dialog的Border为Dialg Frame,又想不允许拖动。
- 对话框应用程序,创建一个picture控件IDC_STATIC_SHOW,如何获得控件IDC_STATIC_SHOW的窗口句柄?
- 如何在ATL中使用Windows Media Player SDK播放流媒体(声音,无图像)?
- MFC程序如何生成HTML表单?
- 100分,解决立即结贴,不够再加!_Recordset 与DBGrid控件动态绑定!怎么弄?up有分!
- 如何得到光标在一个字符串的位置?
- 如何实现菜单的淡如淡出效果?
- 请问弹出光驱的API涵数是什么??最好能详细解释!!
- 100分求 :如何检测一个URL是否可用??
- 请教一个在listCtrl中画背景图片的问题
觉得MFC的思想蛮不错的.
:-)
2004-05-29 09:12 registered
1 developer
不要指望它现在能稳定的运行.
我指的不是MFC的源代码,而是MFC将很多的实现细节暴露在用户,比如那些实现serialization和dynamic create和message map的宏,甚至wizard生成的定位代码也夹杂在里面,格式是:
//{{
我就曾经帮人家解决一个问题,就是因为他将wizard的代码不小心删掉了:-)
而且,要在MFC里面手动添加某些event handler以及某些扩展也是比较痛苦的。
而且,一个MFC程序的源代码和头文件巨多,看起来就不清爽:-)(呵呵,不客观评价了)VCL是个pascal的库,它将实现细节封装得很好,所以用户看到的代码很干净,这种封装主要依赖于bcb编译器的一个非标准扩展特性 __closure,它可以将对象和成员函数绑定到一起,所以用VCL开发的东东其源代码是不可移植的。而.NET Form库是个很不错的库,Anders将他在bcb下的RAD思想的一套完全搬了过来。使得在.NET下搞RAD开发还是可以很干净整洁的,不必和不必要的细节纠缠。而Win32 GUI Generic,虽然这个库才刚起步,但是很显然,它的价值很快会体现出来,微软在win32下面正缺少这么一个优秀的库,长久以来,用mfc开发win32 gui的用户都需要面对一个相对较长时间的学习,很多人说,mfc is dead,但是,mfc身后是谁呢?C++是微软的NO.1语言,虽然它为C++搞了一个C++ CIL语言,但是纯C++还是有很多很多优势的,大部分熟悉纯C++的开发者还是不愿意进入C++ CIL托管的世界(尽管Dox Box也声称“生产力终究会占上风”),这时候微软该拿什么来继续吸引那些C++开发者为它开发桌面应用?
当然是一个可以像.NET Form一样容易使用,干净整洁的GUI框架!
Win32 GUI Generic正是这样的库!至于Win32 GUI Generic的优点我建议大家好好看看作者的网站上的介绍,我就不多说了。
了,另外,作者在包里面附了很多例子,我编译了几个,感觉很不错的说!!可以预见,这是个革命性的库,C++在RAD领域将有光明的前景:-)
GUI 本来就不是应该用手写的东西。.net WinForms 还是 Swing 的优点都在于工具替人完成了大多数的工作,而我相信用 xml + c++ 一定也可以做到这些。不知道 wx 的 XRC 如何……用 wxGlade + Anjuta 开发,有人吗?
晕,作者还挺能赶时髦的:(俺装的是vc6怎么办?
using namespace win32::gui;
这是不是用到了托管代码?如果是,则很遗憾!!!
现在没用上..
以后同样三天两头升级.我想也会走到MFC的路子上去.
听说要出2.0了..
再出3.0
然后是4.0
我想想前后还是不兼容的..
因为我原来开发的东西被骂了好多这个词
伤心ing
同意。另外,如果微软有眼光的话,可能会将这个库(至少思想)纳入旗下,当前windows下正缺少这样的一个库,所以,一旦到了微软的手下,肯定会蓬勃发展...
呵呵,终于看到一个理智的看待这个库的人了...
有信号事件的,本来作者想用boost::signal类的,但是由于会显著增加编译连接时间,所以暂时放弃了,不过作者实现了类似的类,跟踪一下源代码吧。
signal对于win GUI库是及其有用的组件。所以作者肯定会在将来使用它的。
原来简单的东西又被复杂化了.
从语言的使用上来看,它的确不错,可是好像不是很实用.
对于一般应用来说它太复杂了.
对于高级应用来说它又不够用,必须要打破封装.我现在用自己的库写界面,XML + Script + C++ 感觉比较灵活,不过还是少不了消息映射表.
#include <win32gui/frame.hpp>
#include <win32gui/controls.hpp>
using namespace win32::gui;
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR lpCmdLine, int nCmdShow) { DWORD style = WS_VISIBLE | WS_CHILD | SS_CENTER;
wnd<frame> main = create_wnd<frame>(
"My Simple GUI", null_wnd, create_info().rect(200,200,420,270) )
.add_child<label>( "Hello", create_info().rect(10,10,90,30).style(style))
.add_child<label>( "World", create_info().rect(110,10,200,30).style(style));
main->wait( wait_for::destroy );
}
这就是他的HelloWorld???太复杂了吧!比MFC还复杂多了!!看到就头晕。。没有可视化的Res工具,比MFC差多了!垃圾一大堆!!