摘要: 眼下新的GUI Framework的第一版也就只剩下3个控件了。虽然之前说过要开发一个理论上是P2P上的远程对象交互协议、要开发一个窗口设计器、还要开发一个LALR Parser GUI作为GUI Framework的demo。我想这也是一个大的工程,对于我一个人来说。但是今天的一个想法终于把这三个东西串了起来。
阅读全文
posted @
2008-08-19 09:51 陈梓瀚(vczh) 阅读(1789) |
评论 (5) |
编辑 收藏
摘要: Status Bar所提供的消息相当的诡异。Status Bar里面的Items的数量以及宽度要一次性设置好,每次修改的时候都要推翻重建一次,只不过里面的Text倒是可以单独改掉。在XP底下有效的raise border似乎在Vista就没有了。看来Vista已经从伪3D彻底转向了2D了。
Status Bar在CreateWindowEx的时候会自动将自己放在窗口的最底下,每一次修改Status Bar的尺寸的时候,它又会自动把自己放在窗口的最底下。当然,你可以让他出现在最上面。虽然如此,但是我封装的时候还是想自由地修改尺寸和位置,当且仅当我想让他出现在窗口最下面的时候他才出现在窗口最下面,于是我只好截获Status Bar的WM_SIZE消息并扔掉了。
当初为每一个控件都自动Subclass掉的想法还真是正确啊……
阅读全文
posted @
2008-08-15 23:34 陈梓瀚(vczh) 阅读(1539) |
评论 (1) |
编辑 收藏
突然发现Visual Studio 2008的Class Diagram已经支持到native c++了,遂喜,随便点了一下namespace vl就View Class Diagram了。刚一点就后悔了,等了几分钟才出一张图。然后我尝试Export class diagram to image.
刚开始点*.emf,这是一种扩展的元文件,文件里面实际上是一堆GDI命令。好了,这个文件一共有3M多,用画图打开迟迟不出来,以为操作失败,后来打开任务管理器一看,画图刚刚将使用的内存增长到400M,过了10分钟才最终显示。不过没关系,我的电脑3G内存,才用了1.7G死不了的……后来点*.jpg,就剩下2.7M了。
因为觉得挺有意思的,那么我就提供下载吧(点击
这里)。
我的Vczh Library++已经断断续续写了两年多了,因为我是在一个GUI Test Project里面打开的,所以一些其他功能譬如Vczh Free Script、正则表达式、上下文无关文法处理、新的XML Parser等跟GUI无关的部件不在里面。全都包含进去的话估计会更大,我也不想试,搞垮电脑就不好了……不过从这张图可以看出Vczh Library++是一种扁平结构的。图里面有很多类是通过宏生成的,譬如GUI的每一个event object都用了一个宏产生了4个类,用于轻松绑定到多个普通函数、静态函数和类成员函数上。里面还有很多离散对象譬如enum啊、VL_WinListViewItem等等,非常多。最后可以清楚地看到目前GUI的进度,也是一个扁平结构,继承最长的也不外是Button。因为Win32API的WC_BUTTON类功能强大啊,单选复选普通按钮、GroupBox、SplitButton还有一种新的有箭头的居然都是从里面产生出来的,于是继承路径就变成VL_Base -> VL_WinControl -> VL_WinCustomButton -> VL_WinButton了。
下载的文件是一个rar包,包含一个jpg文件和一个从Class Diagram文件改过来的XML,包含了图片所有的类的全名(包括namespace),颇为壮观……
posted @
2008-08-15 09:58 陈梓瀚(vczh) 阅读(2198) |
评论 (8) |
编辑 收藏
摘要: Track Bar很是人性化,不会跟自己之前的经验冲突。Track Bar下面那些杠杠原来是自己插入的,还能改,还真是想干啥就能干啥……
阅读全文
posted @
2008-08-15 08:28 陈梓瀚(vczh) 阅读(1765) |
评论 (1) |
编辑 收藏
摘要: Win32 API为了让控件更为有用真是煞费苦心,不仅Tab没有提供控件可见控制,连Scroll Bar点击的时候竟然是不修改Position的,要我在每一个消息里用SBM_SETSCROLLINFO来设置当前的位置。而且当前的位置的获得还不是一致的,根据消息的不同而不同。真是故意为难人啊。
阅读全文
posted @
2008-08-15 06:26 陈梓瀚(vczh) 阅读(1426) |
评论 (1) |
编辑 收藏
摘要: 今天不小心看到了http://www.antlr.org/works/index.html,我一直认为ANTLR是LR(k)分析器,后来我错了,原来只是LL(k)。我以前写的一个Vczh Syngram是LR(k)的畸形,今天看了居然连LL(k)都能有GUI,我不做一个岂不是对不起自己?
阅读全文
posted @
2008-08-14 05:21 陈梓瀚(vczh) 阅读(1612) |
评论 (2) |
编辑 收藏
摘要: 原来API提供的TabControl只是改改样式而已,客户区连TabPage标签也算在了里面,点击不同的TabPage也不会自动切换子控件的可见属性。这些都要封装啊囧……
在这个设计里,虽然TabPage是一个普通的类,但是每一个TabPage都会自动附带一个Static Control,并在适当的时机修改大小以及修改可见属性。子控件实际上需要放在TabPage的Static Control里,不然的话其实可以连TabPage标签都挡掉。
阅读全文
posted @
2008-08-13 06:33 陈梓瀚(vczh) 阅读(1709) |
评论 (2) |
编辑 收藏
摘要: 囧,实在是囧啊。比起ListView,TreeView还真是简单了无穷多倍,一个晚上就搞定了。贴贴代码和图。
阅读全文
posted @
2008-08-11 05:05 陈梓瀚(vczh) 阅读(2284) |
评论 (6) |
编辑 收藏
摘要: ListView实在是超级无敌复杂地难封装啊,Vista下的ListView简直是万能的,以至于我萌生了将grid和tree-grid都用ListView来实现的想法。当然这只是想一想,暂时不想做。这个ListView花了1700行代码封装完成,共有4个类,分别是item、column、group和listview,listview自己的事件16个。
代码和图片内详
阅读全文
posted @
2008-08-09 02:36 陈梓瀚(vczh) 阅读(6656) |
评论 (27) |
编辑 收藏
摘要: 今天封装好了ComboBox,于是做了个Demo。这个Demo只有一个窗口,上面放着一个ComboBox。如果往里面打文件名的话,会把当前路径下的被筛选过的文件名填充到ComboBox,并自动打开下拉列表。
阅读全文
posted @
2008-08-04 07:20 陈梓瀚(vczh) 阅读(2214) |
评论 (3) |
编辑 收藏