XDL Project

Xiaofei Development Library,简称XDL,中文名只可意会不可翻译。

开始这个项目的起因很简单,就是前不久的一天接到一个游戏上的活儿,工作很简单,就是让游戏不掉线,核心就几句代码就搞定,结果愣是折腾了一下午,原因是主程序端还是用VB6做,而这次要弄的是socket api,一个个地声明各种函数与结构我里个艹,最后把我都要写吐了,发誓再也不要用VB6写东西了!!!

那么又回到了原来那个问题,用C的话选择什么界面库。据说这个问题曾经引发过“血案”——本人坑爹的考研就是一年前拜此问题引发的项目把脑袋搞炸所赐。

如果需要个完善的界面框架,在Windows本机代码下其实是还是首选MFC的,MFC我虽然用的不熟,但写出点软件还是毫无压力的。TForm那一套是Pascal和BCB专用,VC不行;QT不能商业;WX据说与MFC很像,那还不如直接MFC了;GTK+据说在Windows下不给力。

但是MFC存在几个问题是我需要考虑的。

1,我有严重的对小事物的偏执,表现在生活上会买一些小玩意,在程序上就是要求生成文件小,里面不要那么多用不上的代码。MFC的话如果是VC6编译可以选择动态链接MFC42与MSVCRT,这样文件会非常精简,但VC8以上因为XP系统不自带DLL就必须选择静态链接,这样生成的文件会很大。如果单独是链接STL库我就忍了,比如这次毕业设计当前版本的代码是150K,这个比较正常,因为纯自己的内容估计就有50-80K。但MFC简直是。。。表示生成一个空对话框就有200K了,这个我非常非常非常不爽,我喜欢代码量不多的程序大小控制在200K以内,这样压缩后可以控制在100K。

2,MFC对话框,也可以说是Windows对话框,必须要求对话框模板,而不是像VB那样是一个控件一个控件创建的。这里的主要问题是资源。我是喜欢用代码与数据控制程序,即text和data段,而不希望引入操作系统相关的第三方数据。另外一个问题就是我毕业设计设计的把EXE或DLL转换成BIN,这个是无法处理或很难处理资源的问题的,因为代码和数据都可以直接在内存中作为动态代码执行,而资源必须通过FindResource等一系列函数操作,而这些函数要求存在可执行文件。这个限制会使以基于资源的对话框、菜单程序无法做动态代码的部署。

3,消息映射机制。我知道消息映射机制是MFC的亮点,但是伦家是玩VB长大的,伦家喜欢事件啊事件。。。你能不能不要让我每次手动去填那看上去很丑的消息映射表哇。个人非常喜欢.NET Forms中的事件机制,属于事件/观察者模型,注册事件handler非常帅,支持多播。所以我想把MFC改成事件模型的,然后我觉得这不如全部自己搞算了。

综上决定业余时间写个自己的界面/控件库,将Win32包装一下。个人认为如果要深入地完全了解MFC那Win32也基本没什么问题了,因为MFC总是会出现各种各样的不爽与问题,每次去解决都要翻Win32的书。。。

正式编码就从今天刚刚开始,刚刚完成了WM_CREATE HOOK、窗口子类化以及HWND查找C++类的hash,不到200行代码,但是已经开始感到力不从心,代码有些虚和乱。编写类库要比编写一般程序有更高的挑战,一般软件可以不考虑整体的构思,而这个需要。估计接下来还要找笔和纸好好设计一番。

停电了。试着用手机连网发这篇文章。

2 Replies to “XDL Project”

Leave a Reply

Your email address will not be published. Required fields are marked *