本人设计了一套 DIRECTUI 框架,已经有雏形了,设计方案这里不想细说,有兴趣的去我
网站(http://www.huyuhan.com/)看,当然花不了大家太多时间,只看简介和特性介绍就够了,详细内容暂时不需要看。简介都不想看的人,就此离开此帖,别看下面的内容了。
看了简介毫无感觉的人,或者认为这套设计框架没价值没前途的人,现在也可以离开了。
看到这里的人应该认为这套设计还有点吸引人,好,就烦请你们帮忙分析一下它的未来走向:
1、做成商业软件
2、做成免费软件
3、做成开源软件
首先我自己分析一下这三种未来:
第一种:是一个正在考虑的选项,问题在于凭个人力量难以快速完成,太多杂事干扰。当然如果能成功,财源滚滚来。
第二种:我根本不考虑,免费软件是鸡肋,吃力不讨好,免费软件永远被人认为是半成品,不可相信。
第三种:跟第一种一样是可选项,它的好处太多了,问题也不少:一是如果没有人愿意参与,还不如不开源;二是没解决吃饭问题;三是项目质量难以控制;四是“窃书不能算偷”;五是……还没想到。
希望着重讨论第三种未来,如何解决开源带来的问题。我自己只有一个小思路,核心源码可以全部公开,所有人都可以“读代码”,但不会让任何人能编译通过,除非他是核心参与者(扩展开发者因为不涉及核心而不受影响)。但开源的核心源码只提供基础功能,扩展模块不受开源协议限制,可以做成开源,也可以做成商业模块。
选择开源的目的是为了有更多人参与,整套设计方案本身就是可扩展的,所有模块或者要素全部能用同一种方式扩展,一个扩展可以只实现一个很小的功能要素,也能同时实现很多功能要素,例如基础控件都是矩形外观,一个小扩展就能实现圆角矩形外观。下面的例子代码是项目中已使用的:
// 所有绘制目标封装成了CSurface 类,这是一个基类
class CSurface
{
public:
virtual BOOL IsGDI() = 0;
virtual BOOL IsOffscreen() = 0;
virtual HDC GetDC() = 0;
virtual void ReleaseDC(HDC hdc) = 0;
virtual void BltToPrimary(LPRECT pRectSrc=NULL) = 0; // 仅仅针对离屏表面有效
// ...
};
// 下面的类都是从 CSurface 派生的
class CPrimarySurface // DDRAW
class COffscreenSurface // DDRAW
class CGdiSurface // GDI
class COffscreenGdiSurface // GDI
// 在未来的版本或者扩展库中会提供如下的派生类
class CD2DSurface // D2D
class CD3DSurface // D3D
如果开源条件不满足,例如参与人数太少,本人不会公开源码!