首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才
移 动专 题SUNIBM微 软微 创精 华Donews人 邮
我的技术中心 
我的分类 我的文档
全部文章 发表文章
专栏管理 使用说明



 RSS 订阅 
最新文档列表
Windows/.NET
.NET  (rss)    
Visual C++  (rss)    
Delphi  (rss)    
Visual Basic  (rss)    
ASP  (rss)    
JavaScript  (rss)    
Java/Linux
Java  (rss)    
Perl  (rss)    
综合
其他开发语言  (rss)    
文件格式  (rss)    
企业开发
游戏开发  (rss)    
网站制作技术  (rss)    
数据库
数据库开发  (rss)    
软件工程
其他  (rss)    

积极原创作者 
iiprogram (115)
myan (30)
zjzcl (28)
whoopee (61)
lzmtw (32)
longrujun (79)
daisylh (21)
yjz0065 (122)
superyan (28)
cyz1980 (103)
CSDN - 文档中心 - .NET 阅读:12   评论: 0    参与评论
标题   C++ GUI编程---使用SmartWin++      选择自 iiprogram 的 Blog
关键字   C++ GUI编程---使用SmartWin++
出处  

SmartWin++ 100% 标准 C++ 编写的轻量级 GUI (http://smartwin.sourceforge.net) ,现在最新版是 beta 2.0 ,它的最初的目标是替代 MFC WTL 。现在它可以通过 WinLib linux 下使用,据作者介绍,在以后的版本里会支持 linux 下的开发。

 

它是使用 STL Boost 编写,不过使用者不必自己安装 Boost 库,只要下载 SmartWin++ ,编译一下就可以使用了。

 

SmartWin++ 没有 MFC 那样的宏,你完全可以以 C++ 的思维开编写 GUI ,对我们 C++ 开发人员来说,很容易上手。更可贵的是它有一个可视化的 GUI 设计工具 Sally(http://sallyide.sourceforge.net) ,用它与 VC 配合,感觉很不错。

 

SmartWin++ 编译出来的程序很小,这是吸引我的地方之一。它支持 OpenGL 以及 OpenCV ,对做图形图像的人可不错哦。

 

下面是一些截图
 


最简单的程序

// Main.cpp

#include 
" SmartWin.h "
using   namespace  SmartWin;

class  HelloWinClass
            : 
public  WidgetFactory <  WidgetWindow, HelloWinClass  >
{
private :
    WidgetButtonPtr itsButton;

public :

    
void  buttonClicked( WidgetButtonPtr button )
    
{
            createMessageBox().show( _T( 
" Hello World! "  ), button -> getText() );
    }


    
void  initAndCreate()
    
{
        createWindow();
        setText( _T( 
" Hello SmartWin "  ) );     //  Title

        itsButton 
=  createButton();
        itsButton
-> setText( _T(  " Hello "  ) );
        itsButton
-> onClicked(  & HelloWinClass::buttonClicked );
        itsButton
-> setBounds( sw::Rectangle(Point(  90 60  ), Point(  50 30  ) ) );
    }

}
;

int  SmartWinMain( Application  &  app )
{
    HelloWinClass 
*  testHello  =   new  HelloWinClass;
    testHello
-> initAndCreate();
    
return  app.run();
}


我使用 visual c++ 2003 来编译该程序:

首先编译 SmartWin++ 源码,大约几分钟,我们就可以得到 SmartWin.lib SmartWinD.lib 两个库文件,它们分别对应 Release 版和 Debug 版;

然后建一个 Win32 Project 的空项目,把上面的 Main.cpp 加到工程中;

再在工程的属性里把 SmartWin++ 的头文件以及 Lib 库文件的路径设置一下, C/C++ | Language | Enable Run-Time Type Info 设成 Yes (/GR);

再编译执行就 Ok 了。



 

可视化设计工具

作为一个GUI库,如何没有可视化的开发工具是一件很痛苦的事。如何像java的swing一样有布局器还好一点;如果是像素定位的,没可视化工具真的要疯了。

还好有人已经开发了一个开源的SmartWin++的可视化开发工具Sally(
http://sallyide.sourceforge.net ) 。用它来做界面,自动生成界面代码,再配合VC2003写其他代码,用起来真的不错。



相关文章
对该文的评论