QUI开始

No Comments

      一直想自己写套UI框架来练练笔,以便加深对这一块的了解。犹豫了将近半年的时间,今天总算是开工了。几个月前基于Xlib写了个小框架,刚刚能够跑起来,仅仅包含窗口管理和消息循环,没有任何控件支持和绘图支持。这一套框架底层架构基本沿用那里,只是从Xlib移植到Windows。

      关于名字,实在没啥好说的。我个人喜欢简单明了,尤其是容易记忆的名字,既然有GUI一说,那就稍微改改,叫“QUI“咯。Q和G有些类似,也是我名字拼音第一个字母。

      干一件事,总得有一个目标以及具体的规划,给QUI定的目标是一个兼容Windows和Linux(Xlib或基于它的Gtk再说吧,估计QT不大可能),Mac因为一时也不了解先不考虑,嵌入式平台暂不考虑,毕竟PC UI和嵌入式UI设计哲学还是有很大区别的。

      在图形渲染方面,本来是想用那个传说中极度牛B,Google推出来的Skia引擎,不过由于天生驽钝,加上网上关于Skia的资料还相对较少,硬是没有将它攻下来,所以就使用Agg将就一下了。

      对于外设,和普通的UI框架一致,支持鼠标和键盘,不过尽量考虑到未来可能加入其他输入设备的可能,例如比较流行的触摸屏设备。

      控件方面,全部自绘,不过保留对原生控件的接口支持(对其封装,使其看上去和自绘窗口一致)。窗口内部的全部绘图操作都通过绘图引擎Agg实现,不依赖于Gdi等平台相关的API支持。原则上不使用平台内置的控件,不过考虑到richedit、brower等控件相对复杂,自己实现显然不靠谱,所以通过原生控件接口封装使用。

      其他设计要求包括,皮肤支持和动态换肤、国际化和动态语言(如Lua)扩展。遗漏的再慢慢补充,具体的细节再通过开发日志来说明。

      无图不真相,贴个图先,该窗口包含一个控件,自绘了一个太阳光谱。

QQ截图未命名.bmp

WM_MOUSEWHEEL消息

No Comments

      今天调试程序时,发现该消息附带的坐标不是窗口坐标,而是屏幕座标。后来Google了下,发现不仅如此,此消息和它兄弟消息不一样,消息直接发送到具有Focus的控件,而不是鼠标底下的控件。

Google Https翻墙暂行办法

No Comments

      几天前Google Https网站被河蟹。很多东西没法搜索,现在可以通过修改“C:\WINDOWS\system32\drivers\etc\hosts”文件恢复使用,具体是在该文件末尾加入如下内容:

74.125.71.104 encrypted.google.com

74.125.71.99 encrypted.google.com

WM_CREATE消息

No Comments

      写个基于Win Api的小程序,调试时老被断言,因为收到WM_CREATE消息时,该消息的句柄不存在。

      一直以为只有在CreateWidnow(Ex)返回后Windows才会发送窗口消息,原来WM_CREATE消息在该函数还没有返回前就已经发送了。用于告诉程序员,窗口已经初始化完毕,可以任意虐了!

金山卫士的Installer

No Comments

      今天电脑被木马给日了,进程管理器莫名其妙的出现N多iexplorer.exe进程(我都不用ie浏览器上网)。

      一直是360的忠实用户,不过这次让人失望了,所以卸了它装金山卫士试试。官网的安装包很小,5M多点。完了看看一些功能,发现很多功能是没有的,不过可以一键下载安装,然后就可以使用。

      个人觉得这种方式挺好,很人性化,用户可以先利用较少的时间来下载,然后使用其主要功能。一些周边功能则可以通过P2P下载+动态安装完成。

Older Entries